Java 微服务响应模型类

Java 微服务响应模型类,java,architecture,microservices,Java,Architecture,Microservices,我正在开发微服务应用程序,我被困在重复的模型上。 我有4个服务A B C D。每个服务都有自己的数据库,我需要从其他服务(A B C)调用服务D。这意味着我必须在每个服务中创建重复的响应类 假设我有100个服务,服务D将改变模式,这对改变是不利的。我找到了创建库和依赖项的另一个选项。我在java中工作,但是创建.jar库作为依赖关系,不允许我用其他语言实现其他服务,所以我也认为这是一个坏方法。 当然,我试图避免耦合服务,因此无法向所有服务添加依赖性 我的问题是,有没有其他更好的方法为其他服务提供

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

假设我有100个服务,服务D将改变模式,这对改变是不利的。我找到了创建库和依赖项的另一个选项。我在java中工作,但是创建.jar库作为依赖关系,不允许我用其他语言实现其他服务,所以我也认为这是一个坏方法。 当然,我试图避免耦合服务,因此无法向所有服务添加依赖性

我的问题是,有没有其他更好的方法为其他服务提供响应模型?如果可能是从json生成的,或者只是从一个简单的地方构建到其他微服务?
感谢您的回复

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

public class ApiResponse
{
    @JsonProperty
    private String transactionId;

    ...
}
每个
microservice
API响应都将扩展基本响应(即
ApiResponse
)响应

公共类myServiceAppResponse扩展了ApiResponse
{
@JsonProperty
公共字符串国家;
@JsonProperty
公布城市名单;
公共MyServiceAppResponse(字符串事务ID、字符串国家/地区、列表城市)
{
super(transactionId);
这个国家=国家;
这个。城市=城市;
}
....
}
API控制器返回如下响应。例如:

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

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

   return new MyServiceApiResponse(transactionId, country, cities);
}
@GetMapping(path=path)
@响应状态(HttpStatus.ACCEPTED)
public MyServiceAppResponse getCountry(字符串事务ID,字符串国家)
{
...
列表城市=获取城市(国家);
....
返回新的MyServiceAppResponse(transactionId、国家/地区、城市);
}

是。自动生成响应模型。这就是swagger和OpenAPI以及相应的代码生成器的用途。
@GetMapping(path = PATH)
@ResponseStatus(HttpStatus.ACCEPTED)
public MyServiceApiResponse getCountry(String transactionId, String country)
{
    ...

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

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