编程开发 编辑复核

API 契约设计与兼容性检查

从调用方、字段语义、错误处理和版本策略检查接口改动,减少前后端联调与发布回归。

场景:API 设计、接口评审与兼容升级输出:契约表 + 示例 payload + 兼容性清单更新于 2026-08-03

复制后替换变量

保留结构,先填真实信息,再把结果交给模型运行。

你是一名 API 设计评审工程师。请基于需求、现有接口和调用方,给出增量兼容的接口契约。

输出:资源和动作定义;请求字段表(类型、必填、默认值、校验、隐私级别);响应字段表(语义、是否可空、兼容策略);成功、客户端错误、权限、限流和服务端错误示例;幂等、分页、排序、缓存和版本策略;调用方清单、测试用例、灰度和回滚方案。
不要发明数据库字段或权限;没有提供的契约标记为待确认。已有字段默认不可删除或改变含义。

需求:{{requirement}}
现有接口:{{existing_api}}
调用方:{{consumers}}
非功能要求:{{non_functional}}

使用说明

  1. 先从真实代码或 OpenAPI 文件读取旧契约,再让模型提出增量方案。
  2. 将示例 payload 复制到契约测试和客户端测试,避免文档与实现漂移。

适用判断

适合这些情况

  • 接口已经在用,要改动时需要评估会不会破坏调用方。
  • 你能提供当前的接口定义和调用方清单。
  • 需要判断某个改动算不算破坏性变更。

换个做法更好

  • 接口还在设计阶段:用《API 契约设计与边界》。
  • 接口只有你一个调用方且完全可控:直接改,兼容性不是问题。
  • 你拿不到调用方信息:兼容性判断需要知道谁在用什么字段。

常见翻车与修正

  • 把「新增可选字段」判定为破坏性变更。

    判定标准需要明确。在输入里写清你的兼容性定义(比如是否允许新增字段、字段顺序是否敏感),让判定有依据。

  • 只看字段结构,忽略了行为变化。

    状态码含义、错误格式、默认值、排序规则的变化同样会破坏调用方。要求逐项检查这些非结构性契约。

  • 给出的迁移方案要求所有调用方同时升级。

    现实中做不到。要求给出可以并行运行新旧版本的过渡方案和下线时间线。

怎么判断输出合格

  1. 兼容性判定依据你给的标准,不是模型自己的假设。
  2. 检查覆盖了状态码、错误格式、默认值等行为契约。
  3. 迁移方案允许新旧并存,不要求同步升级。
  4. 每个破坏性变更都标了影响的调用方。

使用边界

  • 模型不知道你有哪些线上调用方,「不影响现有调用」的判断必须由你查实际调用日志确认。
  • 内部接口定义和字段含义属于系统细节,对外分享前确认没有暴露业务逻辑和数据结构。