Rest 使用Spring HATEOAS在不同应用程序上链接对象

Rest 使用Spring HATEOAS在不同应用程序上链接对象,rest,spring-boot,spring-cloud,spring-hateoas,microservices,Rest,Spring Boot,Spring Cloud,Spring Hateoas,Microservices,我正在调查SpringCloud,并将两个微服务“提供”和“客户”设置为eureka客户 客户应用程序有: @数据 公共类客户扩展资源支持{ 私人长客户ID; 私有字符串名称; } @RestController @请求映射(“/customers”) @ExposeSourceFor(Customer.class) 公共类CustomerController{ ... } “优惠”应用程序有: @数据 公共类提供扩展了资源支持{ 私人最终长发; 私人最终长期价格; 私人最终客户; } @Re

我正在调查SpringCloud,并将两个微服务“提供”和“客户”设置为eureka客户

客户应用程序有:

@数据
公共类客户扩展资源支持{
私人长客户ID;
私有字符串名称;
}
@RestController
@请求映射(“/customers”)
@ExposeSourceFor(Customer.class)
公共类CustomerController{
...
}
“优惠”应用程序有:

@数据
公共类提供扩展了资源支持{
私人最终长发;
私人最终长期价格;
私人最终客户;
}
@RestController
@请求映射(“/offers”)
@ExposeSourceFor(Offer.class)
公共类报价控制器{
...
}
如何组织代码,以便您可以将
客户
链接添加到
报价
实例?自动连接一个
EntityLink
当然不起作用,因为这两个控制器位于不同的应用程序中


为所有控制器创建带有
@RequestMapping
的接口并在所有应用程序中共享接口是否合理,以便您可以使用例如
Link Link=linkTo(methodOn(OfferController.class).getOffer(2L)).with selfrel()

根据需要链接多少方法,我将手动构建链接,或者在应用程序之间共享api-s,并从这些描述符构建链接。我不会为几个链接引入依赖项

更有趣的问题是,您计划将什么设置为链接的宿主?服务的实际主机或eureka id?我建议设置服务的id,然后设置一个zuul实例,并在其中处理负载平衡和代理


注:当链接服务时,我总是发现自己在链接太多时遇到麻烦。部署速度和弹性可能会受到很大影响。

我们的想法是在URL中使用eureka id,如
http://OFFERS/offers/1
。只要可能,我希望避免手动构建链接。“在应用程序之间共享api-s并从这些描述符构建链接”的确切含义是什么?当你提到共享接口时,这一点与你一样。与
@RequestMapping
共享接口还有另一个好处:我刚刚发现,你也可以从这些接口创建
@佯装客户端
。是的,您可以使用
@RequestMapping
,但其行为与控制器方法稍有不同。例如:无论发生什么,您都需要指定requestmethod。如果offer service从customer service获得客户,则您已经拥有该链接。如果不是,那么要么要约服务不是微服务,要么这两个服务不应该首先分开。