Spring cloud 项目,如何进行接口版本管理比较好呢?

2023-07-27 13:14:14 +08:00
 cnzmz
项目基本情况:
Nacos 配置中心等
Spring Gateway 网关。
再有就是基础的系统服务 user system ,再有就是业务模块了。
其实就是 SpringBalde 开源框架那一套。
https://gitee.com/smallc/SpringBlade?_from=gitee_search

在开发过程中发现某些接口会出现升级变更的情况,期望保留接口原来的接口,保留兼容性。

目前搜索过程中确认到主流的做法有两种。
1. URL 的形式 xxx/v1/user/list 这种。
2. 传一个 Header 的形式,Accept: application/vnd.example+json;version=1.0
或者自己定义一个 Header 传过去。

目前搜索到的实现方案
都是在业务模块中 定义注解、实现一个 RequestCondition<ApiVersionCondition> 这种形式
类似 https://pdai.tech/md/spring/springboot/springboot-x-interface-version.html
请问如果需要在多个业务模块中实现这个,怎么写这部分比较好呢。
如果在每个模块中都写一遍感觉会比较重复。

使用 Spring Gateway 网关能实现类似效果吗?这部分没有查到比较好的内容。
778 次点击
所在节点    问与答
2 条回复
Hurriance
2023-07-27 14:53:38 +08:00
之前的项目用的是你说的主流做法的第一种 xxx/v1/user/list ,好处是很直观,尤其是需要根据 URL 调试的时候,缺点的话,不太优雅?看你的需求更侧重哪个吧。

针对第一种的话,个人体验就是,同一个接口的不同版本尽量紧凑在一块,方便回溯对比。
cnzmz
2023-07-27 16:20:15 +08:00
@Hurriance 其实最主要的是后面的,如果是在业务模块配置的话,是不是业务模块都配置一遍呢,这样子就很麻烦。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/960192

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX