name: API版本控制策略 description: 维护向后兼容性的API版本控制方法综合指南。
API版本控制策略
概述
API版本控制可在服务器演进的同时保护客户端免受破坏性变更的影响。本指南涵盖策略、生命周期管理和迁移实践。
目录
- 为何需要API版本控制
- 版本控制策略
- 语义化版本控制
- 破坏性与非破坏性变更
- 弃用策略
- 版本生命周期管理
- 多版本支持
- API演进模式
- GraphQL版本控制
- OpenAPI版本控制
- SDK版本控制
- 客户端迁移
- 监控版本使用情况
- 最佳实践
- 反模式
为何需要API版本控制
- 保持向后兼容性
- 实现安全迁移
- 支持长期存续的客户端
版本控制策略
常用方法:
- URI路径:
/v1/users - 查询参数:
?version=1 - 请求头:
Accept-Version: 1 - 内容协商:
Accept: application/vnd.api+json;version=1
为清晰度和工具支持,推荐使用URI路径或请求头。
语义化版本控制
使用语义化版本控制来传达变更:
- 主版本号:破坏性变更
- 次版本号:向后兼容的功能新增
- 修订号:向后兼容的问题修复
破坏性与非破坏性变更
破坏性变更:
- 移除字段或端点
- 更改字段类型
- 改变错误语义
非破坏性变更:
- 添加可选字段
- 添加新端点
- 添加枚举值(若为宽容读取器)
弃用策略
使用:
Sunset响应头用于计划性退役- 文档中的弃用通知
- 迁移宽限期
版本生命周期管理
- 为每个版本定义支持时间线
- 维护变更日志和迁移指南
- 自动化弃用通知
多版本支持
技术方法:
- 按版本进行独立路由
- 版本化的控制器或处理器
- 版本化的API文档
路由示例:
/v1/users -> v1处理器
/v2/users -> v2处理器
API演进模式
- 增量变更:添加新字段/端点。
- 扩展与收缩:引入新API,迁移,然后移除旧API。
- 宽容读取器:忽略未知字段。
GraphQL版本控制
GraphQL推荐:
- 使用
@deprecated指令弃用字段 - 添加新字段而非破坏现有模式
OpenAPI版本控制
维护版本化的OpenAPI规范,并按版本发布。
SDK版本控制
使SDK版本与API版本保持一致,并记录兼容性。
客户端迁移
- 提供迁移指南
- 使用功能开关进行渐进式发布
- 在过渡期间提供双写或响应塑形
监控版本使用情况
- 跟踪每个版本的使用情况
- 对已弃用版本的活动发出警报
- 报告采用进度
最佳实践
- 最小化活跃版本数量
- 提供足够长的弃用窗口
- 尽可能避免破坏性变更
反模式
- 静默的破坏性变更
- 过多的并行版本
- 不明确的版本头或路由规则
相关技能
01-foundations/api-design03-backend-api/express-rest51-contracts-governance/openapi-governance