用途:帮助 API 在不破坏现有客户端的情况下持续演进,适用于有外部消费者的公开 API、无法强制更新的移动应用、对现有端点做破坏性变更以及长期 API 维护等场景。
主要能力:介绍三种版本策略。URL 路径版本(如 GET /api/v1/users、GET /api/v2/users)清晰、可缓存、易路由,但会造成 URL 冗余;请求头版本(Accept: application/vnd.myapp.v2+json)URL 干净,但较难测试且无法按 URL 缓存;查询参数版本(?version=2)简单,但容易被遗漏并有缓存问题。资料推荐 URL 路径版本。
使用方式:提供 TypeScript 的 VersionRouter 类,通过中间件从路径提取版本、校验受支持版本、为已弃用版本添加 Deprecation、Sunset、Link 响应头,并按版本分发到不同处理函数;同时给出基于 Accept 头的版本中间件。Python 侧提供 FastAPI 的 VersionedRouter,按路径提取版本并分发处理函数。弃用工作流包括:在响应中声明弃用与下线时间、记录各版本使用量、分阶段下线(警告期、限流、最终返回 410 Gone)。
限制与注意:资料未提供安装命令、依赖版本、性能数据或收费信息。示例中的 Sunset 日期、限流倍数等为演示值,需按实际情况调整。常见错误包括未升版本就做破坏性变更、没有弃用期、未通知即移除版本、各端点版本策略不一致、未跟踪版本使用指标。