当前位置: 首页 > 知识库问答 >
问题:

Spring HATEOAS与Spring数据Rest

祝高超
2023-03-14

问题是,Spring HATEOAS和Spring Data Rest之间有什么区别?

我觉得两者都可以做同样的事情,Spring数据Rest(作为Spring数据的一部分)似乎更有活力。

https://github.com/spring-projects/spring-hateoas https://github.com/spring-projects/spring-data-rest

你什么时候会用其中一个?

共有3个答案

史烈
2023-03-14

我选择在我的项目中同时使用它们。一层控制器是用Spring数据REST构建的。另一层控制器是@RestController(spring-wevmvc)。在这一层中,我使用Spring HATEOAS创建定制页面(过程是:1.创建可分页Pageable Pageable=new PageRequest2.创建新页面page

我找到的加载到这两种技术上下文的解决方案是使用两个DispatcherServlet。否则,SpringDataREST将接管控制权,并且没有选择使用其他控制器。(这样,我的应用程序中有两个域。一个用于Data Rest,另一个用于webmvc HATEOS)。

穆博简
2023-03-14

HATEOAS代表作为应用程序状态引擎的超媒体,是REST的关键组件之一。基本上,关键在于使用资源表示上的链接来映射应用程序状态的有效转换。在这种情况下,服务提供者将提供可通过链接访问的应用程序的有效下一个正确状态。SpringHateOAS是帮助您在资源中构建Hymeridia控件的Spring项目。这是一个和SpringMVC集成的项目,您可以将其视为构建真正的RESTFull WS的SpringMVC扩展,它非常支持将服务级别从CRUD(Richardson模型中的2级成熟度)提高到超媒体感知(Richardson模型中的3级成熟度)。另一方面,SpringDataREST是一个非常好的项目,它使用SpringHateOAS作为基本块,为您提供了一个可用作RESTfullWS的存储库层。在proctis中,该项目有助于减少将your repository层作为restfullendpoint公开的经典BoliPerlent代码。我们可以说,tat是这些项目的支持者,这是非常不同的。有了SpringHateoAS,您就有了一个可用于任何类型restfullendpoint的框架;有了SpringDataREST,您就有了一个Spring项目,该项目已经提供了一个endpoint和一个用于定制endpoint的框架。

我希望这些反思能够帮助您澄清这两个项目之间的差异,更好地理解如何使用其中一个项目

虞高雅
2023-03-14

SpringHateOAS提供了通用的抽象(表示模型、链接类、构建指向SpringMVC控制器链接的API等),以便于使用SpringMVC构建超媒体驱动的RESTAPI。因此,您可以将它与SpringMVC一起使用,手动构建这些服务。

Spring Data REST使用Spring HATEOAS自动公开由Spring Data存储库管理的实体的资源,并利用超媒体方面进行分页、链接实体等。因此,它涵盖了基本内容的80%用例,并允许您稍后使用手动实现的控制器选择性地添加更复杂的流程。

要了解这一点,请随意查看SpringRestbucks示例项目。Order实例的处理完全由springdatarest完成(通过一些小的调整来实现业务约束)。整个支付逻辑然后手动实现,因为流程不属于CRUD类别,因为我们实际上需要实现某些步骤和协议来完成订单。同样,代码在这里,可以在speakerdeck上找到带有一些附加视觉效果的幻灯片。通用域名格式。

 类似资料:
  • 我只是想学习,构建一个Spring HATEOAS应用程序。 我已将自定义查询添加到我的存储库中: 我得到了很好的JSON响应,但由于这是可分页的,我想要一个链接部分。。。使用上一个/下一个。 我该如何添加它? 主url提供了所有客户的列表,链接没有问题,我只想将这些链接添加到自定义可分页方法。 --编辑-- 啊! 使findAllFitered方法返回一个页面而不是列表。。。

  • 我创建一对一的关系,我希望有方法来获取相同的实体(Distributor.class),但是一个做懒惰的获取,另一个渴望。 我遇到的最大问题是,Spring数据JPA似乎忽略了FetchType,并急切地获取所有相关表(基于相关线程和Spring数据JPA文档)。使用分发服务器获取数据的所有Spring数据存储库方法。通过两个选项,从分发服务器和位置中急切地获取位置。通过使用@NamedEntit

  • 我正在遵循入门指南[1],但是我已经从配置设置中删除了MySQL和analytics的内容,因为我不打算使用任何分析函数。但是,scdf服务后来崩溃了,因为没有配置数据源。 好的,所以似乎仍然需要在scdf-config-kafka.yml[2]中配置数据源(尽管从阅读文档来看,我认为它只用于分析内容)。 但为了什么?数据源用于持久化Kafka消息,还是在节点之间建立云流消息? 我找不到任何关于大

  • Spring数据REST(尤其是Spring HATEOAS)将RESTful ID(即URI)与实体ID解耦,在保存新对象时,我很难将它们链接起来。有关此解耦的有趣讨论,请参见https://github.com/SpringSource/spring-data-rest/issues/13. 假设一个客户端应用程序想要创建一个新的票证资源和一个关联的票证类别资源。我想针对远程Spring数据R

  • 我想做一些有趣的事情,我希望能够动态地构建SQL查询过滤器使用Spring Boot 1.5.9和Spring Data Rest,而不需要编写控制器。我觉得我可能走在正确的道路上,但我有点卡住了。 这个想法是通过使用HandlerInterceptorAdapter截取HTTP请求GET方法,并将请求查询参数存储到PagingAndSortingRepository可以使用的对象中。计划是重写S

  • 我无法解决这个问题。我得到了“线程中的异常”main”org.hibernate.LazyInitializationException:未能延迟初始化角色集合:org.sandy.domain.Location.items,没有会话或会话被关闭”我知道会话已关闭,但tx: notionation-drive@Transactional应该确保打开会话。它可以很好地与EAGER获取一起工作。哦,是