SuperAPI AI 工具集

api-design

编程与开发

查看项目

更新于 10-16 04:55

技能介绍

用途:指导设计稳定的 API、协议与接口,适用于设计新 API 端点、定义模块边界或跨团队契约、设计组件 props 接口、建立影响 API 形态的数据库 schema,以及变更既有公开接口。属编码类工作时,建议先加载 engineering-principles 再使用本技能。

主要能力:以契约优先方式先定义接口再实现;遵循 Hyrum 定律,把一切可观察行为视为事实契约,不泄露实现细节;遵循单版本规则,优先扩展而非分叉,避免菱形依赖。统一错误语义,采用一致的 HTTP 状态码与结构化错误体(如 code、message、details),不混用抛异常、返回 null、返回 error 对象等模式。在系统边界做校验,例如使用 Zod、Valibot 等运行时的 safeParse 类模式校验用户输入、表单、第三方响应与环境变量;内部函数、已校验数据的工具函数、来自自身数据库的数据不重复校验。第三方 API 响应应视为不可信数据,使用前先校验形状与内容。

用法与模式:REST 资源采用复数名词,示例:GET /api/tasks、POST /api/tasks、GET /api/tasks/:id、PATCH /api/tasks/:id、DELETE /api/tasks/:id,子资源如 GET/POST /api/tasks/:id/comments。列表接口支持分页,请求形如 GET /api/tasks?page=1&pageSize=20&sortBy=createdAt&sortOrder=desc,响应含 data 与 pagination(page、pageSize、totalItems、totalPages)。过滤用查询参数。局部更新用 PATCH,仅更新传入字段。命名约定:查询参数与响应字段用 camelCase,布尔字段用 is/has/can 前缀,枚举值用 UPPER_SNAKE,REST 端点用复数名词。TypeScript 侧可用判别联合表达变体、分离输入与输出类型(CreateTaskInput 与含服务端生成字段的 Task),并用 branded types 区分 TaskId 与 UserId。新增字段应为可选以保持向后兼容,避免修改或删除既有字段。

适用场景:REST API、GraphQL schema、模块边界、组件 props 等所有代码间通信界面。

限制与提醒:常见误区包括稍后补文档、暂不做分页、用 PUT 代替 PATCH、需要时才做版本管理、认为无人依赖未文档化行为、同时维护两个版本、认为内部 API 不需要契约。危险信号包括端点返回形状不一致、错误格式不统一、校验散落内部代码、破坏性字段变更、列表无分页、第三方响应未经校验直接使用。校验清单:每个端点有类型化输入输出 schema;错误响应格式统一;校验仅在系统边界;列表支持分页;新字段为可选且向后兼容;命名一致;API 文档或类型与实现一同提交。资料中未提供具体价格、平台支持范围与安装命令。