with example data custom java spring spring-data-rest hateoas spring-hateoas

java - example - Spring HATEOAS versus Spring Data Rest



spring rest hateoas (3)

Elegí usarlos a ambos en mi proyecto. Una capa de controladores se construyó con Spring Data REST. La otra capa de controladores era @ RestController''s (spring-wevmvc). En esta capa utilicé Spring HATEOAS para crear páginas personalizadas. (El proceso fue: 1.creating Pageable Pageable pageable = new PageRequest 2. creación de una página nueva página Page<FooDt> page = new PageImpl<FooDt> 3.creating PagedResources PagedResources<Resource<FooDt>> resource = fooAssembler.toResource(page, fooAssembler) después de ese proceso usando el ObjectMapper de Jackson para devolver json.

La solución que encontré para cargar para contextualizar ambas tecnologías, es usar dos DispatcherServlet''s. De lo contrario, Spring Data Rest toma el control y no hay otra opción para usar otros controladores. (De esa forma, tenía dos dominios en mi aplicación: uno para Data Rest y otro para webmvc + HATEOS).

La pregunta es, ¿cuál es la diferencia entre Spring HATEOAS versus Spring Data Rest?

Siento que ambos pueden hacer lo mismo, y Spring Data Rest (como parte de Spring Data) parece un poco más vivo.

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

¿Cuándo usarías uno o el otro?


HATEOAS representa Hypermedia como el motor del estado de aplicación y es uno de los puntos clave de REST. Básicamente, el punto clave consiste en utilizar enlaces en la representación de su recurso para mapear la transición válida del estado de la aplicación. En este caso, será el proveedor del servicio el que proporcione el siguiente estado válido de la aplicación a la que se puede acceder a través del enlace. Spring HATEOAS es los proyectos de Spring para ayudar a construir los controles de Hymeridia en su recurso. Es un proyecto integrado con Spring MVC y se puede considerar como la extensión de Spring MVC para la construcción de un verdadero REST Full WS con un muy buen soporte para aumentar el nivel de su forma de servicio CRUD (nivel 2 de madurez en el modelo de Richardson) a una Hipermedia consciente (nivel 3 de madurez en el modelo de Richardson). Spring Data Rest en las otras manos es un proyecto muy bueno que utiliza Spring HATEOAS como ladrillo básico, para darle una capa de repositorio utilizable como restfull ws. En consecuencia, el proyecto ayuda a reducir el clásico código bolívoro para exponer la capa de su repositorio como un punto final restfull. Podemos decir que tat fue la proposición de los proyectos muy diferentes. Con Spring HATEOAS tenía un marco utilizable para cualquier tipo de punto final relajante, con el reposo de datos de primavera tenía un proyecto de primavera que ya proporciona un punto final y un marco para personalizarlo.

Espero que estas reflexiones puedan ayudarlo a aclarar la diferencia entre los dos proyectos y comprender mejor cómo usar uno u otro


Spring HATEOAS proporciona abstracciones comunes (modelos de representación, una clase de Link , API para construir enlaces que apuntan a los controladores Spring MVC, etc.) para facilitar la creación de API REST impulsadas por hipermedios con Spring MVC en general. Por lo tanto, puede usarlo junto con Spring MVC para compilar manualmente esos servicios.

Spring Data REST utiliza Spring HATEOAS para exponer recursos automáticamente para entidades administradas por repositorios de Spring Data y aprovecha los aspectos hipermedia para hacer paginación, vincular entidades, etc. Por lo tanto, cubre el uso del 80% de las cosas básicas y le permite agregar procesos selectivos más complejos utilizando controladores implementados manualmente más adelante.

Para obtener una idea de esto, no dude en echar un vistazo al proyecto de ejemplo Spring RESTBucks . El manejo de las instancias de Order es realizado completamente por Spring Data REST (con algunos ajustes menores para implementar las restricciones comerciales). La lógica de pago completa se implementa manualmente ya que el proceso no entra en la categoría CRUD ya que realmente necesitamos implementar ciertos pasos y un protocolo para completar el pedido. Una vez más, el código está aquí , se puede encontrar una plataforma de diapositivas con algunas imágenes adicionales en speakerdeck.com .