بنقرة واحدة
endpoint-design
设计具体 API 端点时使用。适用于资源建模后的下一步、列端点清单、HTTP 方法和状态码选择。优先使用 RFC 7231 HTTP 语义 + GitHub REST 命名规范。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
设计具体 API 端点时使用。适用于资源建模后的下一步、列端点清单、HTTP 方法和状态码选择。优先使用 RFC 7231 HTTP 语义 + GitHub REST 命名规范。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
设计 API 认证鉴权和权限矩阵时使用。适用于多角色系统、租户隔离、字段级权限。优先使用 OAuth 2.0 / JWT + RBAC + 资源归属检查。
设计 API 错误码和错误结构时使用。适用于错误响应规范、调用方错误处理、调试可观测。优先使用 RFC 7807 Problem Details + 业务错误码 + 调用方处理建议。
设计幂等接口和重试策略时使用。适用于支付、扣减、订单、关键写操作。优先使用 Idempotency-Key + 业务去重键 + 并发冲突处理(ETag/版本号)。
输出 OpenAPI 契约和 Mock 服务时使用。适用于 API 设计的最后一步、给前端/后端/QA 的交付。优先使用 OpenAPI 3.1 + Mock 数据覆盖所有路径 + 详细的下游交接清单。
设计列表接口的分页、筛选、排序、搜索时使用。适用于所有列表 API。优先使用 cursor 分页(大数据)或 offset 分页(小数据)+ 统一筛选/排序规范。
设计请求和响应结构时使用。适用于字段定义、校验规则、响应格式。优先使用 JSON:API 风格 + 字段稳定性 + 完整校验规则。
| name | endpoint-design |
| description | 设计具体 API 端点时使用。适用于资源建模后的下一步、列端点清单、HTTP 方法和状态码选择。优先使用 RFC 7231 HTTP 语义 + GitHub REST 命名规范。 |
参考来源:RFC 7231 HTTP/1.1 Semantics、GitHub REST API Guidelines
1. 用 HTTP 方法表达动作
GET / POST / PUT / PATCH / DELETE 各有语义
2. 用 HTTP 状态码表达结果
不要用 200 包装所有错误
3. URL 路径用名词
动作通过 method 表达
4. 一致性优先
全 API 用同一套命名规范
| 方法 | 用途 | 幂等 | 安全 |
|---|---|---|---|
| GET | 查询资源 | ✅ | ✅ |
| POST | 创建资源 / 触发动作 | ❌ | ❌ |
| PUT | 完全替换资源 | ✅ | ❌ |
| PATCH | 部分更新资源 | ❌* | ❌ |
| DELETE | 删除资源 | ✅ | ❌ |
| HEAD | 查询头部(如检查存在) | ✅ | ✅ |
| OPTIONS | 查询支持的方法 | ✅ | ✅ |
*PATCH 不严格幂等,但可设计为幂等(如带 If-Match)
幂等:多次调用结果相同(可重试)
安全:不修改服务器状态(可缓存)
200 OK 请求成功(GET/PUT/PATCH 默认)
201 Created 资源已创建(POST 创建)
202 Accepted 已接收,异步处理中
204 No Content 成功但无返回(DELETE 默认)
301 Moved Permanently 永久迁移
302 Found 临时重定向
304 Not Modified 未修改(缓存生效)
400 Bad Request 请求格式错误 / 参数错误
401 Unauthorized 未认证(缺 token / token 无效)
403 Forbidden 已认证但无权限
404 Not Found 资源不存在
405 Method Not Allowed 方法不支持
409 Conflict 冲突(如重复创建 / 版本冲突)
410 Gone 资源已永久删除
422 Unprocessable Entity 校验失败
429 Too Many Requests 限流
500 Internal Server Error 服务器异常
502 Bad Gateway 网关错误
503 Service Unavailable 服务不可用
504 Gateway Timeout 网关超时
路径:
- 复数(users / orders)
- 小写
- 连字符分隔(reset-password 而非 resetPassword)
- 不带后缀(/users 不是 /users.json)
查询参数:
- snake_case 或 camelCase(团队选一种坚持用)
- 布尔值用 true/false(不要 1/0)
Header:
- 标准 Header(Authorization / Content-Type)
- 自定义用 X-(如 X-Request-Id)— 但 RFC 6648 已不推荐 X- 前缀
查询列表:
GET /resources
GET /resources?page=1&page_size=20
查询单个:
GET /resources/{id}
创建:
POST /resources
→ 201 Created + 资源完整内容
→ Header: Location: /resources/{new-id}
完全替换:
PUT /resources/{id}
→ 200 OK + 替换后的资源
部分更新:
PATCH /resources/{id}
→ 200 OK + 更新后的资源
删除:
DELETE /resources/{id}
→ 204 No Content(默认)
→ 200 OK + 被删除的资源(如需要)
## 端点清单:[模块名]
| Method | Path | 用途 | 调用方 | 权限 | 成功状态码 | 失败状态码 | 幂等 | Mock |
|--------|------|------|--------|------|-----------|-----------|------|------|
| GET | /users | 查询用户列表 | 前端/后台 | admin | 200 | 401/403/500 | ✅ | ✅ |
| POST | /users | 创建用户 | 前端 | guest | 201 | 400/409/422/500 | ❌ | ✅ |
| GET | /users/{id} | 查询用户详情 | 前端 | self/admin | 200 | 401/403/404/500 | ✅ | ✅ |
| PATCH | /users/{id} | 更新用户 | 前端 | self/admin | 200 | 400/401/403/404/422/500 | ❌ | ✅ |
| DELETE | /users/{id} | 删除用户 | 后台 | admin | 204 | 401/403/404/500 | ✅ | ✅ |
| POST | /users/{id}/reset-password | 重置密码 | 后台 | admin | 202 | 401/403/404/500 | ❌ | ✅ |
| GET | /users/{id}/orders | 用户订单 | 前端 | self/admin | 200 | 401/403/404/500 | ✅ | ✅ |
1. 读取资源清单(来自 resource-modeling)
2. 对每个资源应用标准 CRUD
3. 识别需要的特殊端点(动作/查询变体)
4. 决定 HTTP 方法
5. 列出可能的状态码
6. 标注权限和幂等
7. 输出端点清单
8. 转交 request-response 设计字段
□ HTTP 方法用对了(不要 POST 做查询)
□ 状态码语义正确(不要 200 包错误)
□ 命名一致(复数 / 小写 / 连字符)
□ 幂等性标注清楚
□ 权限说明清楚
□ 是否考虑了 OPTIONS / HEAD
templates/endpoint-inventory-template.md — 端点清单 + HTTP 方法速查模板上游:
resource-modeling → 提供资源清单
平行:
request-response → 详细字段设计
error-handling → 失败状态码细化
auth-permission → 权限规则
下游:
openapi-mock → 写入 OpenAPI 文档
references/endpoint-design-guide.md — URL 命名、HTTP 方法语义、状态码使用、子资源、动作化端点、大厂范式(GitHub / Stripe / Google AIP)、自检清单