帮助你为生产级 REST API 制定一致、易用的设计规范。
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "api-design" 技能: 1. 下载 https://raw.githubusercontent.com/affaan-m/ECC/main/skills/api-design/SKILL.md 2. 保存为 ~/.claude/skills/api-design/SKILL.md 3. 装好后重载技能,告诉我可以用了
请为一个电商系统设计 REST API,包含用户、订单与订单取消功能。要求给出资源命名、URL 结构、HTTP 方法、状态码,以及错误响应格式。
一套结构清晰的 API 设计方案,包含资源路径、方法语义、常用状态码和统一错误响应建议。
请审查以下 REST API 设计是否符合最佳实践,重点检查 URL 命名、状态码使用、分页与过滤参数,以及是否存在把动词放进 URL 的问题。
指出接口中的设计问题,并给出更符合 REST 约定的修改建议。
请为一个对外开放的 REST API 制定版本管理和限流策略,并说明适合返回哪些 HTTP 状态码以及何时使用它们。
一份面向公开 API 的版本和限流设计建议,附带相关状态码使用说明。
开发者或产品经理在设计新的 REST 接口时,可用它统一资源命名、URL 结构、方法语义和状态码规则,减少后续返工。它尤其适合面向开发者、合作伙伴或外部客户的 API。
当团队需要评审现有 API 合同是否一致、易用时,它可帮助检查是否正确使用复数资源名、过滤参数、分页设计和错误响应格式。这样能提升接口可读性和集成体验。
在 API 功能扩展阶段,它适合用于补充分页、过滤、排序以及统一错误处理规则。这样能让接口在进入生产环境前更完整、更稳定。
文档概述了设计一致、对开发者友好的 REST API 的常见约定与最佳实践,涵盖何时使用该技能、资源 URL 结构、命名规则、子资源与少量动作型路径的处理方式,以及 GET、POST、PUT、PATCH、DELETE 的语义区别。还总结了常见成功、客户端错误和服务端错误状态码,并通过正反示例说明错误响应与创建资源时的推荐写法。
Conventions and best practices for designing consistent, developer-friendly REST APIs.
# Resources are nouns, plural, lowercase, kebab-case
GET /api/v1/users
GET /api/v1/users/:id
POST /api/v1/users
PUT /api/v1/users/:id
PATCH /api/v1/users/:id
DELETE /api/v1/users/:id
# Sub-resources for relationships
GET /api/v1/users/:id/orders
POST /api/v1/users/:id/orders
# Actions that don't map to CRUD (use verbs sparingly)
POST /api/v1/orders/:id/cancel
POST /api/v1/auth/login
POST /api/v1/auth/refresh
# GOOD
/api/v1/team-members # kebab-case for multi-word resources
/api/v1/orders?status=active # query params for filtering
/api/v1/users/123/orders # nested resources for ownership
# BAD
/api/v1/getUsers # verb in URL
/api/v1/user # singular (use plural)
/api/v1/team_members # snake_case in URLs
/api/v1/users/123/getOrders # verb in nested resource
| Method | Idempotent | Safe | Use For |
|---|---|---|---|
| GET | Yes | Yes | Retrieve resources |
| POST | No | No | Create resources, trigger actions |
| PUT | Yes | No | Full replacement of a resource |
| PATCH | No* | No | Partial update of a resource |
| DELETE | Yes | No | Remove a resource |
*PATCH can be made idempotent with proper implementation
# Success
200 OK — GET, PUT, PATCH (with response body)
201 Created — POST (include Location header)
204 No Content — DELETE, PUT (no response body)
# Client Errors
400 Bad Request — Validation failure, malformed JSON
401 Unauthorized — Missing or invalid authentication
403 Forbidden — Authenticated but not authorized
404 Not Found — Resource doesn't exist
409 Conflict — Duplicate entry, state conflict
422 Unprocessable Entity — Semantically invalid (valid JSON, bad data)
429 Too Many Requests — Rate limit exceeded
# Server Errors
500 Internal Server Error — Unexpected failure (never expose details)
502 Bad Gateway — Upstream service failed
503 Service Unavailable — Temporary overload, include Retry-After
# BAD: 200 for everything
{ "status": 200, "success": false, "error": "Not found" }
# GOOD: Use HTTP status codes semantically
HTTP/1.1 404 Not Found
{ "error": { "code": "not_found", "message": "User not found" } }
# BAD: 500 for validation errors
# GOOD: 400 or 422 with field-level details
# BAD: 200 for created resources
# GOOD: 201 with Location header
HTTP/1.1 201 Created
Location: /api/v1/users/abc-123
{
"data": {
"id": "abc-123",
"email": "[email protected]",
"name": "Alice",
"created_at": "2025-01-15T10:30:00Z"
}
}
{
"data": [
{ "id": "abc-123", "name": "Alice" },
{ "id": "def-456", "name": "Bob" }
],
"meta": {
"total": 142,
"page": 1,
"per_page": 20,
"total_pages": 8
},
"links": {
"self": "/api/v1/users?page=1&per_page=20",
"next": "/api/v1/users?page=2&per_page=20",
"last": "/api/v1/users?page=8&per_page=20"
}
}
{
"error": {
"code": "validation_error",
"message": "Request validation failed",
"details": [
{
"field": "email",
"message": "Must be a valid email address",
"code": "invalid_format"
},
{
"field": "age",
"message": "Must be between 0 and 150",
…
它聚焦 REST API 设计模式,包括资源命名、状态码、分页、过滤、错误响应、版本管理和限流。目标是让 API 更一致、更易于开发者使用。
可用于设计新接口、评审现有 API 合同、补充分页与过滤规则、实现错误处理,以及规划版本策略。文档节选明确列出了这些典型使用时机。
文档强调资源使用复数名词、小写和 kebab-case,优先用查询参数做过滤,并按 HTTP 语义返回正确状态码。还提到对非 CRUD 动作应谨慎使用动词型路径。
用于仓库命令执行、CI排障与小范围修复,并提供可核验执行证据。
帮助用户高效整理邮箱、起草核验并安全发送邮件与跟进。
为 Quarkus 项目执行发布前验证闭环,涵盖构建、测试、扫描与差异审查。
通过并行执行、批量调用与独立验证通道,加速复杂任务且保持结果正确。
帮助开发者快速掌握 Kotlin Ktor 服务端常用架构与测试模式。
提供地道 Go 语言模式与最佳实践,帮助构建健壮高效且易维护的应用
帮助你设计或评估Web服务架构、API模式、扩展性与可靠性问题。
帮助团队识别客户可见 API 变更并判断发布、评审与弃用流程要求
提供 Django 架构模式、DRF 接口设计与生产级开发最佳实践指导
将设计稿转为开发交付说明,明确布局、组件、状态与响应式规范
帮助生成界面设计规范、获取配色方案并检索品牌设计参考素材。
帮助用户设计系统、服务与技术架构,并梳理接口、数据模型和服务边界。