后端、接口与数据 · 进阶

接口版本化:怎么改而不破坏

一句话: 你发布了接口——就是做出了承诺。破坏性变更需要新版本、重叠期和提前通知。

什么算破坏性变更

删除字段或路由、改变类型、把可选字段变成必填、改变已有取值的含义,以及收紧限制。增加一个可选字段不算破坏——前提是调用方会忽略它不认识的字段,而这条规则值得写进文档。

怎么管理一次迁移

让新版本和旧版本并行运行,度量还有谁在用旧的,等到用量归零或者已经给出足够通知之后再关闭。

少数几个有实质内容的版本,胜过为每个小改动都出一个版本。每一个还活着的版本都是要维护和测试的代码。

逐步下线

在文档和响应头里把字段和路由标记为计划移除,并附上日期。给活跃的调用方发通知。最后,在正式关闭之前——做一次「受控黑暗」:关掉几分钟,看谁会喊。

深入一层

按版本和调用方保留指标,而不只是按路由。没有它,关闭一个旧版本就是一场赌博,而受影响的人会在他们自己的生产环境里发现——也就是在一通打到你这里的紧急电话里。