API 设计助手
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/api-design-skillhub。
技能介绍
解决什么问题
手工设计 RESTful API 时,失败往往不在接口跑不起来,而在语义失控:POST /getUserList 这类动词式路径混进代码库,PUT 与 PATCH 的幂等边界说不清,列表接口一会儿返回数组一会儿返回 {data, total},错误码在 400 和 200 之间反复横跳。这个 skill 把一套可重复的设计约束固化下来,让 AI agent 按统一规范产出端点定义、请求响应结构与 OpenAPI 文档,而不是临场发挥。
核心能力与工作流程
它把 API 设计拆成六步:
- 识别资源与关系——从业务描述中抽取名词(
users、tasks、comments),明确一对多、多对多关系,决定用子资源(/tasks/{id}/comments)还是独立集合。核心纪律:URI 只放资源名,不放动词。 - 定义端点与 HTTP 方法——
GET读取(安全、幂等),POST创建(非幂等),PUT全量替换、PATCH部分更新、DELETE删除(均幂等)。强关联资源嵌套在父资源下。 - 设计请求与响应 schema——字段命名统一为
snake_case或camelCase,区分必填/可选、类型与校验约束,所有端点共用一个错误信封。 - 分页、过滤与排序——列表接口支持游标或偏移分页(
limit/offset),过滤走查询参数(如?status=active),排序用sort+order,响应带total与next/prev链接。 - 版本与内容协商——URI 路径
/v1/tasks(最常见)、查询参数?version=1或Accept头三选一;同版本内向后兼容,弃用需文档化时间线。 - 生成 OpenAPI 文档——输出完整 OpenAPI 3.0 规范,含 paths、schemas、安全方案与示例,响应文档带限流头
X-RateLimit-Limit、X-RateLimit-Remaining、X-RateLimit-Reset。
另有几条值得抄进团队规范的实践:资源路径用复数;POST 支持 Idempotency-Key;响应带 HATEOAS 链接;从第一天起做版本号;201 Created 返回 Location 头。技术栈覆盖 OpenAPI 3.0/3.1、JSON Schema、AsyncAPI(仅事件驱动扩展)与 Express.js、FastAPI、Django REST Framework、Spring Boot、Rails API,文档工具兼容 Swagger UI、Redoc、Stoplight,测试可用 Postman、Insomnia、REST Client、curl。
适用边界与注意点
常见坑有明确结论:空集合返回 200 + 空数组 + has_more: false 而非 404;硬删除返回 404,软删除返回 410 Gone 并附删除时间;并发更新用 ETag + If-Match,冲突时返回 412;批量部分失败返回 207 Multi-Status 逐项标注;尾部斜杠归一化,强制规范形式时用 301;未知查询参数要么静默忽略要么报 400,关键是全局一致。
也要留意边界:它的输入是业务领域描述,输出是设计产物而非可运行代码;认证与权限只体现在文档的 security schemes 中,不会生成鉴权中间件;422、207 等细节需团队先达成共识,否则会与现有规范冲突。
使用场景
- 接到后台管理系统的新需求,需要给任务和评论模块设计完整的 CRUD 接口与嵌套资源路径
- 团队要统一接口风格,先确定分页、过滤、排序的查询参数和分页元数据返回结构
- 服务即将上线,需要补齐 OpenAPI 3.0 规范、错误码表与限流头,供前端和第三方对接
- 现有接口出现版本混乱,需要为 v1 制定向后兼容策略并规划弃用时间线
适合人员
- 后端工程师:要在动手写代码前产出规范的端点定义与 schema
- 全栈开发者:独立交付前后端,需要一份前后端都能对齐的接口文档
- API 平台负责人:为团队制定统一的接口规范并约束错误码与版本策略
- 独立开发者:人手有限,希望一次生成可评审、可迭代的接口设计稿