REST API 设计规范
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_a4c2f3d2/design-api。
技能介绍
团队接口为什么总对不齐
多人协作或前后端联调时,常见问题是:URL 里塞动词、创建成功仍返回 200、错误体里带堆栈、分页 sort 直接拼进 SQL、Handler 里堆业务逻辑。这些不是「框架选错了」,而是缺少一套可对照检查的约定。
技能覆盖什么
本规范按 跨语言通用 思路组织,不绑定某一框架,但给出与 Spring、FastAPI、Express、Gin、ASP.NET 等的概念映射表,便于落地。
- 资源与 URL:名词复数、路径嵌套不超过 3 级;集合/单资源 CRUD 与
POST /orders/{id}/cancel类动作的分工;版本优先/api/v1/...,筛选分页走 query。 - HTTP 语义:GET/POST/PUT/PATCH/DELETE 的幂等与 Body 规则;禁止「全部 POST」。
- 状态码与响应体:2xx 不含错误信息;4xx/5xx 必须有人类可读说明;统一封装(业务码或对齐 HTTP)及列表/分页/错误结构。
- 工程结构:网关 → 入口校验 → 业务层;Handler 只负责参数与编排;全局异常映射到 401/403/404/409/422/500。
- 安全与文档:JWT/OAuth2、越权与枚举统一 404、幂等键、限流
429;接口以 OpenAPI 3.x 维护并与代码同步。
文末附有 严禁清单(如空列表返回 null、排序字段不白名单等),适合在评审或 Code Review 时逐项勾选。
适用边界
这是设计规范与检查清单,不会替你生成具体项目的 DTO 或 OpenAPI 文件;风格 A/B 的响应 JSON 示例在原文中为占位,落地时需你们选定一种并在全项目统一。业务域建模(哪些资源、哪些状态机)仍需结合产品自行定义。
使用场景
- 新模块开工前,按资源表起草 `GET/POST /users`、嵌套子资源及 `POST .../cancel` 动作路径,供前后端评审对齐。
- 合并 PR 时对照严禁清单:创建是否返回 201、错误是否仍用 200、空列表是否误返回 `null`、Handler 是否夹带业务逻辑。
- 多微服务对外统一门户前,选定一种响应封装并约定列表、分页与校验失败时一次返回全部字段错误。
- 设计登录、短信或文件上传接口时,写明 401/403/429 语义、`Retry-After`、上传大小类型限制及下载前权限校验。
适合人员
- 负责新服务接口契约的后端工程师,需要在写 Controller 前统一 URL 命名与 PUT/PATCH 全量/部分更新区分
- 带前后端联调的技术负责人,希望用同一套状态码与分层规则(Handler/Service/Repository)评审接口 PR
- 维护 API 网关或 BFF 的平台开发,要对齐 JWT 鉴权、排序白名单与越权时统一 404 的实现细节
- 正在把遗留「全部 POST」接口改为 REST 风格的全栈开发,需要对照 HTTP 幂等与全局异常映射表改代码