java如何在springbootmicroservices项目中实现HATEOAS
最近,我一直在尝试使用JavaSpring Boot框架构建微服务。我目前有一个可运行的微服务系统,它有多种资源(它们都有自己的独立服务),例如:图书服务和评论服务。 每个服务都有自己的RestController,并使用MongoRepository与其数据库交互
应用程序的最终用户(web客户端)不会与这些独立服务本身通信,而是与它们上面的API通信
此API调用book and review服务,合并数据并将其返回给客户端。请注意,所有通信都使用ResponseEntity<T>
(T
可以是Book
、Review
、Iterable<Book>
等)
但在阅读了一段时间后,我了解了HATEOAS,我想在我的微服务设置中使用它。现在我的问题是,实现这一点的最佳方式是什么
我发现的一些例子扩展了实体类(在我的例子中是BookEntity或带有Spring的ResourceSupport
类的Review实体)。但是这会导致错误,因为我的实体有一个ID参数,并且getId()
方法与ResourceSupport类的getId()
方法冲突
其他示例包含用@RestResource
注释的MongoRepository
,而不是使用控制器
所以我的问题是,在这种情况下,什么是实现HATEOAS的最佳方式?例如,当图书服务添加链接(HATEOAS方式)时,上面的API如何更改这些链接?因为最终用户只会调用此API,而API只会处理这些请求并将其委托给必要的子服务
# 1 楼答案
如果您想让HATEOAS就位,但不想使用spring数据rest,那么仍然可以使用Spring HATEOAS
它由spring data rest内部使用,并使您能够创建一个HATEOAS样式的rest API