gpt4 book ai didi

java - Spring Boot 微服务 API 版本控制实现

转载 作者:行者123 更新时间:2023-12-02 08:47:12 25 4
gpt4 key购买 nike

需要修改 Spring Boot 微服务的现有契约(请求/响应有效负载),这本质上是破坏性更改(不向后兼容)。并且必须在一段时间内支持合约的两个版本 - 直到所有客户端将自己升级到新版本。

为了实现这一目标,我们决定使用 URL 版本控制策略(例如/v1/{resource} 和/v2/{resource})。

现在的问题是在代码中实现此功能的最佳方法是什么?以下是两个建议的解决方案

  1. 分支出版本一 (/v1) 代码并单独维护它,直到支持该版本为止。这本质上意味着从 master 中删除分支并从该分支构建/部署,并维护同一服务的两个实例,每个实例分别支持 v1v2 版本。

  2. 在同一个 master 分支中,引入一个单独的包(例如 service.api.v2.request),并将所有 api 有效负载请求/响应类放入其中,并引入一个新端点支持的 Controller (/v2)。这种方法使单个实例能够支持这两个版本。

以上哪一种是更好的方法?或者是否有其他标准/更好的替代方案来实现这一目标? Spring Boot 是否为此类需求提供任何开箱即用的支持?

最佳答案

这取决于 Controller 背后有多少通用性。如果版本一直到后端都显着不同,那么可能不同的分支更容易使用,但如果主要差异在于 Controller 路径以及这些方法中涉及的输入和输出对象,那么可能有 2 个分支导致对两者进行更改并记住每次都这样做的痛苦 - 在这种情况下,迟早会错过重要的修复。

这都是一个平衡,您需要权衡您案例中方法的时间和精力方面的维护成本,以及错误的风险,以及单独部署的成本。

关于java - Spring Boot 微服务 API 版本控制实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61000084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com