微服务中REST api的版本和弃用方法

问题描述 投票:-1回答:1

这是我的要求:1.版本REST端点2.避免代码重复3.已弃用的APIS

以下是REST端点的示例:GET:https:///www.thisatests.com/v1/users

获取:https:///www.thisatests.com/v2/users

v1和v2的响应结构完全不同。版本号是路径变量。

有关实施方法的问题:

  1. 我们应该有2个不同的代码库来避免重复的代码吗?
  2. 我们应该运行两个不同的微服务来满足v1和v2吗?
  3. 我们应该同时运行同时满足v1和v2的Single micro服务吗?

理想情况下,我们不想启动两个不同的微服务来执行此任务,也不想拥有不同的代码库来执行此操作。

我们正在使用SpringBoot进行REST API的开发。我知道我们可以在控制器的类级别或功能级别添加注释。

我想知道实现版本控制的最佳方法是什么,以便“使用相同的代码库(没有重复的代码)和一个微服务”如何做到这一点?

注意:当我说相同的代码库且重复的意思是:例如。如果我使用相同的方法控制器来获取基于v1和v2响应格式更改的用户详细信息。因此,我必须避免输入“ if v1或if v2”之类的内容。

如果我用代码编写2个不同的功能控制器,那么如何处理已弃用的api?如何清理代码?在任何时候,我们只希望支持2个版本的api。在上述限制下,什么是最佳方法?

谢谢。

spring-boot rest coding-style microservices design
1个回答
0
投票

根据我的经验,您可以将这两个端点视为由同一微服务提供的单独服务(功能)。这意味着您应该有一个代码库来支持这两种功能。您可以在可能的部分重用您的代码,但这并不总是可能的或可行的。

关于如何处理已弃用的api:这取决于您的客户端。如果您可以直接与客户交流,则应将旧服务的终止通知客户,并提供迁移到新服务端点的必要指南。

您还可以检查您的日志,以查看是否有特定的客户端在日落时间临近时仍在使用您的代码。如果需要,您可以直接与他们交谈。

© www.soinside.com 2019 - 2024. All rights reserved.