
云原生应用的设计
|
45
3.4 API 设计与版本控制
因为 API 是其他服务用来与你的服务进行通信的接口,因此正确地记录和版本化 API 至
关重要。现实情况是,API 版本控制做起来很困难,尤其是考虑到各种各样的方法实在
太多了。根据 Jean-Jacques Dubray 所做的研究,API 版本控制的成本取决于你采用的策
略。他分类了三种不同的策略:
无版本(
knot
)
API 只有一个版本,API 的调用者永远只调用最新的 API。当 API 接口发生更改时,
所有使用者也需要跟着改。对于调用者而言,这是最昂贵的方法,因为每次发布新
的 API 版本时,他们都必须升级。
点对点(
point-to-point
)
所有版本的 API 都在正常运行,每个调用者都使用他们需要的版本。调用者可以根
据需要迁移到新版本。与无版本相比,这对调用者来说是一个更好的策略,但是对
于 API 开发人员而言,维护较旧的 API 版本成本很高。
兼容性版本控制(
compatible versioning
)
所有调用者都使用最新的 API 版本。旧版本的 API 会被舍弃,但是最新版本的 API
是向后兼容的。
研究结果表明,兼容性版本控制策略是最高效的。尽管对 API 的开发者而言,它确实会
带来一些额外的工作,因为需要保持向后兼容性。
REST 本身不提供任何特定的版本控制约定,但有三种方法来实现版本控制:全局版本
控制、资源版本控制和基于 mime 的方法。这些方法中的每一种都有其优点和缺点,这
里没有明确的最佳方法。