Versioning 让你能在带有**破坏性变更(breaking changes)**的情况下演进一个 API,而不破坏现有的 client。有三种主流策略,外加一个 deprecation 流程。
三种策略
1. URI versioning —— 版本放在 path 中。
GET /v1/users/42 HTTP/1.1
GET /v2/users/42 HTTP/1.1
最简单、最可见;易于路由、缓存和在浏览器中测试。缺点:它在技术上违反了“URI 标识一个资源”(同一个 user 现在有两个 URL)。这是迄今为止最常见的选择(GitHub、Stripe 历史上如此)。
2. Custom header versioning —— 版本在一个 header 中传递。
GET /users/42 HTTP/1.1
X-API-Version: 2
