java - 如何在 Spring-Boot 微服务项目中实现 HATEOAS

标签 java spring rest microservices spring-hateoas

最近我一直在尝试使用 Java Spring Boot 框架构建微服务。我目前有一个正在运行的微服务系统,其中包含多个资源(它们都有自己的独立服务),例如:图书服务和评论服务。 每个服务都有自己的 RestController 并使用 MongoRepository 与其数据库交互。

应用程序的最终用户(网络客户端)不会与这些独立服务本身进行通信,而是与它们之上的 API 进行通信。

此 API 调用图书和评论服务,合并数据并将其返回给客户端。请注意,所有通信均使用 ResponseEntity<T> ( T 可以是 BookReviewIterable<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/

相关文章:

java - NullPointerException 导致 Android 应用程序崩溃

java - OSGI 环境中的 Spring 应用程序

java - 订单管理系统的Rest API设计

ruby-on-rails - 使用关联数据发布 JSON

java - Java中的Max-Flow图模拟

java - 如何指定 Google Guice 的实现路径?

java - 根据键列表过滤 map

java - 如何使用运行时参数创建原型(prototype)范围的 @Bean?使用 getBean(String name, Object...args)?

java - 为什么 Spring Boot 后端 JAR 文件在 Ubuntu 上只运行一小段时间?如何让它作为服务运行?

django - 在Django Rest框架中处理请求 header 以获取 header 中传递的 key 并将其保存在用户表中?