的一种方式\设计开发Java春天REST API的多个版本
问题描述:
需要一种方法\设计,开发,例如Java的春天REST API的多个版本: exampleAPiV1,exampleAPiV2,exampleAPiV3的一种方式设计开发Java春天REST API的多个版本
所有3个版本的API的应该是活与此同时。此外,如果需要在特定版本中修复/增强bug,则这些更改不会影响其他版本的零或最小代码重复。
答
对于API的版本有3种方式:
-
在URL例如暴露API版本:
http://api.example.com/V1 /实例
http://api.example.com/V2 /实例
使用Ac CEPT接头,接受:应用/ JSON + V1
- 使用自定义首部,X-API版本:1
关于转码,则可以使用的路由/报头,以执行相应的功能。
我的意思是在您的应用程序的特定点(中间件)或动作之前,您可以从URL或标题中获取版本值,并根据您调用该功能的值。
为什么你需要多个版本,通常你可以做一个API的很多突变并保持向后兼容性。您经常在URL/v1/exampleapi/sayhello中看到API版本,然后使用适配器将旧邮件升级到最新版本,以避免代码复制。我看到的另一种可能性是有一个端点并包含一个版本头。 –
我们有多个客户来我们的api。并非所有人都同意过渡到新版本。我希望在任何时候我们都可以支持任何版本,而不会破坏或影响现有的功能。通过标头或网址版本是好的,但我正在寻找一个解决方案,帮助我维护代码背后的最小重复的API。 –
大多数情况下,您尝试将旧邮件升级到最新版本。我对内部设置协议做了类似的处理,每个版本都有所不同,有时甚至是修补程序,所以服务器必须能够与5个以上不同的客户端版本进行通信。诀窍是有简单的转换器,只能升级到下一个版本。当客户说他想要谈论第3版时,您将第5版消息转换为4,然后再转换为3,并在接收时将其从3升级到5。通过这种方式添加额外的版本只需要转换器从以前的版本。 –