Skip to content

API 版本控制

API 版本控制是让 API 在长期演进中既能迭代创新、又不破坏既有客户端的工程实践。一个对外发布的 API,一旦有客户端依赖,任何「破坏性变更」(删除字段、改字段类型、改参数必填性、改语义)都会让这些客户端崩溃——而 API 又必须随业务演进。版本控制的核心矛盾:稳定性(旧客户端不能挂)vs 灵活性(API 要能改)。理解三大主流版本策略——URL 版本控制(/v1/users)、Header 版本控制(Accept-Version: 1)、媒体类型内容协商(Accept: application/vnd.api+json;version=1)——以及配套的语义化版本(SemVer)、废弃策略(deprecation)、向后兼容原则,是设计可演进、对客户端友好 API 的基础。版本控制没有银弹,每种策略都有取舍(URL 显式但丑、Header 干净但难调试、内容协商优雅但复杂),关键是团队理解利弊后一致执行。

API 版本控制的全部考点围绕策略与生命周期展开:①三种策略(URL/Header/媒体类型)——回答「版本信息放哪」;②语义化版本(SemVer,MAJOR.MINOR.PATCH)——回答「版本号怎么定」;③废弃策略(@deprecated、Sunset 头、迁移窗口)——回答「旧版本怎么退场」;④向后兼容(什么算破坏性变更、如何尽量兼容)——回答「何时必须升版本、何时不用」。本叶是 API 设计章的演进基石,讲清版本控制的策略选型、语义化版本、废弃与迁移——与 REST、GraphQL、OpenAPI 三叶共同构成完整的 API 设计体系。

评价

优点

  • 保护既有客户端:破坏性变更放新版本,旧客户端继续用旧版本不被中断
  • 支持并行迭代:新旧版本可同时运行(路由层分发),给客户端迁移窗口
  • 显式契约:URL 版本让客户端明确知道自己依赖哪个版本的契约
  • 配合文档:每个版本对应一份文档(OpenAPI spec),降低理解成本

缺点

  • 维护成本翻倍:多个版本要同时维护(bug 要在所有版本修,或写适配层),团队负担重
  • 版本爆炸:没有强制退役策略时版本越积越多,最终变成「历史包袱」
  • 策略争议:URL vs Header vs 媒体类型各有利弊,社区无共识,团队易陷入争论
  • 客户端惰性:客户端不愿升级(「能用就不改」),旧版本迟迟退不了场

本叶地图

  • 入门 —— 版本控制的必要性、三种策略概览、语义化版本、向后兼容速览
  • 版本控制策略 —— URL/Header/媒体类型内容协商三种策略的详细对比与实现
  • 废弃策略与迁移 —— 废弃通知、Sunset 头、迁移窗口、向后兼容原则
  • 参考 —— 策略对比速查、破坏性变更清单、易错点

幻灯片地址

API 版本控制

测试题

API 版本控制测试题