Spring HATEOAS vs Spring Data Rest

时间:2013-10-22 09:34:21

标签: java spring spring-data-rest hateoas spring-hateoas

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

我觉得两者都可以这样做,Spring Data Rest(作为Spring Data的一部分)似乎更活跃。

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

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

3 个答案:

答案 0 :(得分:72)

Spring HATEOAS提供了常见的抽象(表示模型,Link类,用于构建指向Spring MVC控制器的链接的API等),以便通过Spring MVC轻松构建超媒体驱动的REST API。因此,您可以将它与Spring MVC一起用于手动构建这些服务。

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

要了解这一点,请随时查看Spring RESTBucks示例项目。 Order实例的处理完全由Spring Data REST完成(通过一些小的调整来实现业务约束)。然后手动实施整个支付逻辑,因为该过程不属于CRUD类别,因为我们实际上需要实现某些步骤和协议来完成订单。同样,代码为here,可在speakerdeck.com找到带有一些其他视觉效果的幻灯片。

答案 1 :(得分:1)

我选择在我的项目中使用它们。使用Spring Data REST构建了一层控制器。另一层控制器是@ RestController&#39; s(spring-wevmvc)。在这一层中,我使用Spring HATEOAS来创建自定义页面。 (过程是: 1.创建可分页Pageable pageable = new PageRequest 2.创建新的页面Page<FooDt> page = new PageImpl<FooDt> 3.使用Jackson的ObjectMapper在该过程之后创建PagedResources PagedResources<Resource<FooDt>> resource = fooAssembler.toResource(page, fooAssembler)以返回json。

我找到的加载到上下文两种技术的解决方案 - 使用两个DispatcherServlet&#39。 否则,Spring Data Rest将获得控制权,并且无​​法使用其他控制器。 (通过这种方式,我在我的应用程序中有两个域。一个用于数据休息,一个用于webmvc + HATEOS)。

答案 2 :(得分:1)

HATEOAS代表Hypermedia作为应用程序状态的引擎,是REST的关键词之一。基本上,关键点是使用资源表示上的链接来映射应用程序状态的有效转换。在这种情况下,服务提供商将提供通过链接可访问的应用程序的有效下一个正确状态。 Spring HATEOAS是帮助在您的资源中构建Hymeridia控件的Spring项目。这是一个与Spring MVC集成的项目,您可以将Spring MVC扩展视为构建真正的RESTFull WS whit的一个非常好的支持,以提高您的服务形式CRUD(Richardson模型中成熟度的第2级)的级别。超媒体感知(Richardson模型中成熟度的第3级)。另外,Spring Data Rest是一个非常好的项目,它使用Spring HATEOAS作为基本块,为您提供一个可用作restfull ws的存储库层。在proctis中,该项目有助于减少传统的boliporlent代码,以将您的存储库层公开为restfull端点。我们可以说tat是项目的主张非常不同。使用Spring HATEOAS,你有一个可用于任何类型的restfull端点的框架,使用spring数据,你有一个spring项目,它已经提供了一个端点和一个用于自定义它的框架。

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