最近我一直在尝试使用 Java Spring Boot 框架构建微服务。我目前有一个正在运行的微服务系统,其中包含多个资源(它们都有自己的独立服务),例如:图书服务和评论服务。 每个服务都有自己的 RestController 并使用 MongoRepository 与其数据库交互。
应用程序的最终用户(网络客户端)不会与这些独立服务本身进行通信,而是与它们之上的 API 进行通信。
此 API 调用图书和评论服务,合并数据并将其返回给客户端。请注意,所有通信均使用 ResponseEntity<T>
( T
可以是 Book
、 Review
、 Iterable<Book>
等,..)
但在阅读了一段时间后,我了解了 HATEOAS,并且我想在我的微服务设置中使用它。现在我的问题是,实现这个的最佳方法是什么?
我发现的一些示例扩展了实体类(在我的例子中是 Book 实体或带有 Spring 的 ResourceSupport
类的 Review 实体)。但这会导致错误,因为我的实体有一个 ID 参数和 getId()
方法与 getId()
冲突ResourceSupport 类的方法。
其他示例包含 MongoRepository
注释为 @RestResource
而不是使用 Controller 。
所以我的问题是,在这种情况下实现 HATEOAS 的最佳方式是什么?以及例如当图书服务添加链接(HATEOAS 方式)时,上面的 API 如何更改这些链接?由于最终用户只会调用此 API,而 API 仅处理这些请求并将其委托(delegate)给必要的子服务。
最佳答案
如果您想安装 HATEOAS 但不想使用 spring-data-rest,您仍然可以回退到 Spring HATEOAS
它由 spring-data-rest 内部使用,使您能够创建 HATEOAS 风格的 REST API。
关于java - 如何在 Spring-Boot 微服务项目中实现 HATEOAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32887039/