【问题标题】:A way\design to develop multiple version of java spring rest api一种开发多版本java spring rest api的方法\设计
【发布时间】: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


【解决方案1】:

对于 API 版本控制有 3 种方式:

  1. 在 URL 示例中公开 API 版本:

    http://api.example.com/v1/examples

    http://api.example.com/v2/examples

  2. 使用 Accept Header,Accept: application/json+v1

  3. 使用自定义标头,X-Api-Version: 1

关于代码,您可以使用路由/标头来执行相应的功能。

我的意思是在您的应用程序(中间件)的某个点或操作之前,您可以从 URL 或标头获取版本值,并根据您调用功能的值。

【讨论】:

    猜你喜欢
    • 2019-09-21
    • 1970-01-01
    • 2016-06-23
    • 2020-04-12
    • 1970-01-01
    • 2020-04-29
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多