我正在开发微服务应用程序,但我陷入了重复的模型。 我有 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/