帮助你为生产级 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 动作应谨慎使用动词型路径。
提供适用于 React/Next.js 的高质量动画模式,快速实现常见交互动效。
用于多轮推演与递归决策,保留可追溯证据链并比较多种方案。
用于 Laravel 项目的环境检查、测试、安全扫描与发布验收
端到端编排新功能开发流程,覆盖调研、规划、测试驱动实现、评审与提交把关。
帮助你编写或审查符合 React 18/19 最佳实践的组件与架构。
帮助开发者为具备交易权限的智能代理设计安全防护与风控机制
帮助你设计或评估Web服务架构、API模式、扩展性与可靠性问题。
帮助团队识别客户可见 API 变更并判断发布、评审与弃用流程要求
帮助开发团队参考现代合规银行接口设计并快速启动 API 开发。
提供 Django 架构模式、DRF 接口设计与生产级开发最佳实践指导
将设计稿转为开发交付说明,明确布局、组件、状态与响应式规范
帮助生成界面设计规范、获取配色方案并检索品牌设计参考素材。