java - 微服务响应模型类

标签 java architecture microservices

我正在开发微服务应用程序,但我陷入了重复的模型。 我有 4 个服务 A B C D。每个服务都有自己的数据库,我需要从其他服务( A B C )调用服务 D 。这意味着我必须在每个服务中创建重复的响应类。

假设我有 100 个服务,而服务 D 将更改模型,这对更改不利。我发现作为创建库和依赖项的另一种选择。我正在使用 Java 工作,但创建 .jar 库作为依赖项不允许我用其他语言实现其他服务,因此我认为这也是不好的方法。

我当然试图避免耦合服务,因此不能向所有服务添加依赖项。

我的问题是还有其他更好的方法来为其他服务提供响应模型吗?如果可能以某种方式从 json 生成,或者只是简单地从 1 个地方将其构建到其他微服务? 谢谢您的回复

最佳答案

我建议您通过实现标准 API 响应来标准化您的响应。例如,每个响应都应该有一个标准的事务 ID。理想情况下,您可以在所有微服务使用的公共(public)或共享库中拥有此基本响应。

public class ApiResponse
{
    @JsonProperty
    private String transactionId;

    ...
}

每个微服务 API响应都会扩展基本响应(即ApiResponse)响应

public class MyServiceApiResponse extends ApiResponse
{
    @JsonProperty
    public String country;

    @JsonProperty
    public List<City> cities;

    public MyServiceApiResponse(String transactionId, String country, List<City> cities)
    {
        super(transactionId);
        this.country = country;
        this.cities = cities;
    }

    ....
}

API Controller 返回这样的响应。例如:

@GetMapping(path = PATH)
@ResponseStatus(HttpStatus.ACCEPTED)
public MyServiceApiResponse getCountry(String transactionId, String country)
{
    ...

   List<City> cities = getCities(country);
   ....

   return new MyServiceApiResponse(transactionId, country, cities);
}

关于java - 微服务响应模型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59815176/

相关文章:

java - 如何在xml配置文件中指定spring处理程序拦截器的顺序?

java - java内存池是怎么划分的?

c# - 从代码在 VS 中创建 UML 类图

c++ - 在网络上查找和分发字典更改的最佳方式

java - 将数据插入 MySQL 数据库时出现问题

java - JPanel棋盘不显示

wpf - 使用 XAML/WPF 实现复杂曲线编辑器的策略

java - 当两者都使用 docker compose 运行时,API 网关永远不会从配置服务器获取配置

微服务和复制数据库表

python - 应用程序在微服务架构中通信的最佳方式是什么