关于 api-design-patterns
用于设计和评审 RESTful API 的规范技能,包含资源设计、错误处理、安全、分页、版本管理、响应格式和文档规则。适用于从新端点规划到现有 API 检查的工作。
主要功能
- 01资源命名与 HTTP 方法规范
- 02错误响应与验证信息设计
- 03认证、授权及输入安全建议
- 04分页、筛选与排序模式
- 05API 版本管理指导
- 06OpenAPI 文档规则
适用场景
- 01规划新的 REST API 端点
- 02评审现有 API 的结构
- 03设计分页、筛选和排序参数
- 04编写 OpenAPI 或 Swagger 文档
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ asyrafhussin/ agent-skills --skill api-design-patterns安装后在 Claude Code 中输入/api-design-patterns确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdrules/_sections.md_template.mddoc-changelog.mddoc-examples.mddoc-openapi.mderror-consistent-format.mderror-error-codes.mderror-meaningful-messages.mderror-no-stack-traces.mderror-request-id.mderror-validation-details.mdfilter-query-params.mdpage-consistent-params.mdpage-cursor-based.mdpage-metadata.mdpage-offset-based.mdresp-compression.mdresp-consistent-structure.mdresp-json-conventions.mdresp-partial-responses.mdrest-hateoas.mdrest-http-methods.mdrest-idempotency.mdrest-nested-resources.mdrest-nouns-not-verbs.mdrest-plural-resources.mdrest-resource-actions.md详细介绍
API 设计模式
构建一致且对开发者友好的 API 的 RESTful API 设计原则。包含 7 个类别的 38 条规则,涵盖资源设计、错误处理、安全性、分页、版本控制、响应格式和文档。
元数据
- 版本: 2.0.0
- 规则数量: 7 个类别共 38 条规则
- 许可证: MIT
适用场景
在以下情况下可参考这些指南:
- 设计新的 API 端点
- 审查现有 API 结构
- 实施错误处理和验证
- 设置分页、筛选和排序
- 规划 API 版本控制策略
- 配置 API 安全性(身份验证、CORS、速率限制)
- 编写 API 文档(OpenAPI/Swagger)
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 资源设计 | 严重 | rest- |
| 2 | 错误处理 | 严重 | error- |
| 3 | 安全性 | 严重 | sec- |
| 4 | 分页与筛选 | 高 | page-、filter-、sort- |
| 5 | 版本控制 | 高 | ver- |
| 6 | 响应格式 | 中 | resp- |
| 7 | 文档 | 中 | doc- |
快速参考
1. 资源设计(严重)
rest-nouns-not-verbs- 端点使用名词,而非动词rest-plural-resources- 使用复数资源名称rest-http-methods- 正确使用 HTTP 方法(GET、POST、PUT、PATCH、DELETE)rest-nested-resources- 正确嵌套资源(最多 2 层)rest-status-codes- 使用恰当的 HTTP 状态码rest-idempotency- 使用幂等键实现幂等操作rest-hateoas- 使用超媒体链接以便于发现rest-resource-actions- 将非 CRUD 操作作为子资源
2. 错误处理(严重)
error-consistent-format- 保持错误响应结构一致error-meaningful-messages- 提供有帮助且可操作的错误消息error-validation-details- 提供字段级验证错误error-error-codes- 提供机器可读的错误代码error-no-stack-traces- 绝不在生产环境中暴露堆栈跟踪error-request-id- 包含请求 ID 以便调试
3. 安全性(严重)
sec-authentication- 正确实施身份验证(OAuth2/JWT)sec-authorization- 设置资源级权限(RBAC)sec-rate-limiting- 通过速率限制防止滥用sec-input-validation- 验证并清理所有输入sec-cors-config- 使用白名单配置 CORSsec-https-only- 强制所有流量使用 HTTPSsec-sensitive-data- 保护密码、令牌和个人身份信息
4. 分页与筛选(高)
page-cursor-based- 对大型数据集使用游标分页page-offset-based- 在简单场景中使用偏移分页page-consistent-params- 保持参数命名一致page-metadata- 在响应中包含分页元数据filter-query-params- 通过查询参数进行筛选sort-flexible- 支持灵活排序,使用-前缀表示降序
5. 版本控制(高)
ver-url-path- 在 URL 路径中指定版本(/api/v1/)ver-header-based- 通过 Accept 标头指定版本ver-backward-compatible- 保持向后兼容ver-deprecation- 使用 Sunset 标头制定弃用策略
6. 响应格式(中)
resp-consistent-structure- 保持响应封装结构一致resp-json-conventions- 遵循 JSON 命名约定resp-partial-responses- 支持选择字段(稀疏字段集)resp-compression- 压缩响应(gzip/Brotli)
7. 文档(中)
doc-openapi- 提供 OpenAPI/Swagger 规范doc-examples- 提供请求/响应示例doc-changelog- 提供 API 更新日志
基本指南
资源命名
# ❌ Verbs in URLs
GET /getUsers
POST /createUser
# ✅ Nouns with HTTP methods
GET /users # List users
POST /users # Create user
GET /users/123 # Get user
PUT /users/123 # Update user (full)
PATCH /users/123 # Update user (partial)
DELETE /users/123 # Delete user
错误响应格式
{
"error": {
"code": "VALIDATION_ERROR",
"message": "The request contains invalid data",
"details": [
{
"field": "email",
"code": "INVALID_FORMAT",
"message": "Please provide a valid email address"
}
],
"request_id": "req_abc123"
}
}
分页
{
"data": [...],
"meta": {
"current_page": 2,
"per_page": 20,
"total_pages": 10,
"total_count": 195
},
"links": {
"first": "/users?page=1&per_page=20",
"prev": "/users?page=1&per_page=20",
"next": "/users?page=3&per_page=20",
"last": "/users?page=10&per_page=20"
}
}
速率限制标头
HTTP/1.1 200 OK
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1640995200
使用方法
阅读各条规则文件,了解详细说明:
rules/rest-http-methods.md
rules/error-consistent-format.md
rules/page-cursor-based.md
rules/sec-authentication.md
rules/ver-url-path.md
rules/doc-openapi.md
参考资料
完整编译文档
完整指南(包含展开后的所有规则):AGENTS.md
评论
支持 Markdown