【发布时间】:2017-02-10 23:03:21
【问题描述】:
需要一种方式\设计来开发多个版本的java spring rest api 例如: 示例APiV1,示例APiV2,示例APiV3
所有 3 个 api 版本应该同时存在。此外,如果需要在特定版本中修复错误\增强,这些更改不会影响其他版本,代码重复为零或最少。
【问题讨论】:
-
为什么你需要多个版本,通常你可以对一个 API 做很多修改并保持向后兼容性。您经常在 URL /v1/exampleapi/sayhello 中看到 API 版本,然后您使用适配器将旧消息升级到最新版本,以避免代码重复。我见过的另一种可能性是有一个端点并包含一个版本标头。
-
我们的 api 有多个客户端。并非所有人都同意迁移到新版本。我希望在任何时候我们都可以支持任何版本,而不会破坏或影响现有功能。通过标头或 url 进行版本控制很好,但我正在寻找一种解决方案,可以帮助我以最少的重复维护 api 后面的代码。
-
大多数时候,您会尝试将旧邮件升级到最新版本。我用内部设置协议做了类似的事情,每个版本都会改变,有时甚至在修补程序中,所以服务器必须能够与 5+ 不同的客户端版本通信。诀窍是有一个简单的转换器,它只能升级到下一个版本。当客户说他想谈第 3 版时,您将第 5 版消息转换为 4,然后再转换为 3,并在收到时从 3 升级到 5。这种方式添加额外版本只需要从以前版本到当前版本的转换器。
标签: java spring rest api versioning