程序员如何做「API 版本控制」:不是改着玩,是向前兼容

程序员如何做「API 版本控制」:不是改着玩,是向前兼容

API 一旦发布,就不能随便改。

但业务在变,API 也需要升级。怎么版本控制?


一、为什么需要 API 版本控制

1. 向前兼容

旧客户端还能用新 API。

2. 灰度发布

新版本可以逐步放量。

3. 多版本并存

不同版本的客户端,对应不同的服务端实现。

4. 追溯问题

出问题了,知道是哪个版本的 API 的问题。


二、版本控制的方式

1. URL 路径(最常用)

/api/v1/users
/api/v2/users

优点:直观,容易调试 缺点:URL 会变

2. Header

Accept: application/vnd.api+json; version=1

优点:URL 不变 缺点:不直观,需要额外配置

3. Query 参数

/api/users?version=1

优点:简单 缺点:容易忽略,影响缓存


三、版本升级的策略

1. 不破坏性修改

2. 破坏性修改

破坏性修改必须升版本。

3. 废弃(Deprecation)

标记为废弃但还能用:

{
  "deprecated": true,
  "sunsetDate": "2025-01-01",
  "message": "请使用 /api/v2/users"
}

四、版本控制的最佳实践

1. 最小版本号

从 v1 开始,不要 v0。

2. 主要版本和次要版本

3. 维护多个版本

不要只维护最新版本,保留最近 2 个版本。

4. 文档清晰

每个版本有对应的文档。

5. 主动通知

废弃前通知调用方,给足够的迁移时间。


五、版本控制的工具

1. Swagger / OpenAPI

API 文档工具,支持多版本。

2. Postman

API 测试工具,支持环境切换。

3. API Gateway

nginx / Kong / Apigee,支持版本路由。


六、一句话总结

API 版本控制 = URL/Header/Query 参数 + 破坏性修改升版本 + 维护最近2个版本 + 文档清晰

/*]]>*/