API 弃用政策
接口一旦有外部调用方,弃用政策即成合同级义务。
规则
- 版本前缀。对外接口一律带版本前缀(/v1)。meta.api_version 与 meta.service_version 随每个响应返回。
- 破坏性变更只升大版本。删字段、改字段含义、改路由、改层级要求,都是破坏性变更,只在新的大版本前缀(/v2)下发生;/v1 在弃用期内继续服务。
- 提前两版公告。弃用在生效前至少两个版本(语义化版本的次版本)公告;公告期内旧接口照常工作。
- 响应头标记。被弃用的路由在弃用期内返回 Deprecation: true 与 Link: <后继路径>; rel="successor-version",与现行旧版 /api 的做法相同。
- 加法不算弃用。新增字段、新增路由、新增可选参数不改版本;契约门禁 要求新增的记录形状先写契约。
- 迁移链同理。Schema 只追加,不改写已发布的迁移条目;每个迁移写明回滚。
现行实例:旧版 /api
/api 无鉴权、无层级,已被 /v1 取代。现行行为:/api 仅限本机回环访问;每个 /api 响应带 Deprecation: true 与 Link: </v1>; rel="successor-version";远程访问被拒时返回的 message 指向 /v1。
如何公告
- 变更日志
- CHANGELOG.md,一个版本一节,条目写明设计号;弃用条目写明生效版本与后继路径。
- 接口文档
- 与代码同一次提交更新(工程标准 2.8);/openapi.json 由 FastAPI 自动生成,随服务版本变化。
- 方法学接口
- GET /v1/methodology 返回本服务应用的规则,与服务同版本。
MCP 工具的兼容承诺
六个只读工具的名称与参数 与 /v1 适用同一政策:不删工具、不改既有参数含义,除非升大版本并提前两版公告。工具与 REST 共用同一服务层,所以返回形状的变化同时发生、同时公告。当前按冻结清单 只读六工具不再加。