用途:为 HTTP/REST/GraphQL 接口做设计或评审,涵盖版本策略、分页、错误形状、幂等性、鉴权、状态码、缓存头与破坏性变更处理。触发场景包括新增公开 API 端点、重构服务间内部边界、评审引入 HTTP 处理器的 PR、验收标准含“API 可用”的任务切片,以及 GraphQL schema 变更。
主要能力与原则:调用方会比你的假设活得更久,需为扩展而非当前调用方设计;状态码要诚实,不要用 200 OK 配 {"error":"not found"};列表端点必须分页。流程上先收集契约(调用方、版本策略、鉴权模型、幂等预期、一致性模型),再做资源与操作命名(REST 用名词复数、按层级嵌套、非 CRUD 动作用子资源;GraphQL 查询用名词、变更用动词、相关变更归入输入类型并返回受影响对象),接着确定方法与状态码(GET/POST/PUT/PATCH/DELETE 的幂等性与默认成功码,以及 400/401/403/404/409/410/422/429/500/503 语义,429 与 503 需带 Retry-After),再定分页(默认游标分页,返回不透明 cursor 与 nextCursor,limit 设硬上限如 200;仅小数据集与跳页场景用 offset;GraphQL 可选用 Relay 风格 connections 或 {items, nextCursor})、统一错误形状(含机器可读 code、人读 message、结构化 details、requestId,不泄露堆栈与内部查询)、幂等与并发(Idempotency-Key、ETag/If-Match、Cache-Control、409 乐观并发冲突)、版本与演进(增量变更免费,破坏性变更需 /v2/ 路径版本、sunset 头与弃用窗口,GraphQL 用 @deprecated 并附迁移说明),最后把契约写入仓库的 OpenAPI/GraphQL SDL 并随变更一起提交。
使用方式与限制:评审时按 file:line、类别、建议的格式产出结论;新设计时输出包含范围、端点/操作、鉴权、分页、错误形状、幂等/并发、版本策略、OpenAPI/SDL 的文档,并用 gsd_decision_save 保存决策以渲染 .gsd/DECISIONS.md。反模式包括 200 配错误体、无上限列表、大规模 offset 分页、无 code 的自由文本错误、原地破坏性变更、忽略可重试 POST 的幂等性、仅在 handler 而不在服务层做鉴权。资料未提供具体价格、平台支持或实现代码示例。