Saltar al contenido

Cuándo usar @RestController vs @RepositoryRestResource

Mantén la atención porque en esta crónica vas a encontrar el arreglo que buscas.

Solución:

Ok, entonces la historia corta es que quieres usar el @RepositoryRestResource ya que esto crea un HATEOAS servicio con Primavera JPA.

Como puede ver aquí, agregando esta anotación y vinculándola a su Pojo, tiene un dispositivo completamente funcional. HATEOAS servicio sin tener que implementar el método de repositorio o los métodos de servicio REST

Si agregas el @RestController entonces tienes que implementar cada método que quieras exponer por tu cuenta y además no exporta esto a un HATEOAS formato.

Hay una tercera (y cuarta) opción que no ha descrito, que es usar @BasePathAwareController o @RepositoryRestController, dependiendo de si está realizando acciones específicas de la entidad o no.

@RepositoryRestResource se usa para establecer opciones en la interfaz pública del Repositorio: creará automáticamente puntos finales según corresponda según el tipo de Repositorio que se está ampliando (es decir, CrudRepository/PagingAndSortingRepository/etc).

@BasePathAwareController y @RepositoryRestController se usan cuando desea crear puntos finales manualmente, pero desea usar las configuraciones REST de Spring Data que ha configurado.

Si usa @RestController, creará un conjunto paralelo de puntos finales con diferente opciones de configuración, es decir, un convertidor de mensajes diferente, diferentes controladores de errores, etc., pero coexistirán felizmente (y probablemente causen confusión).

La documentación específica se puede encontrar aquí.

Bueno, las respuestas anteriores son correctas en su contexto, pero aún así te doy un ejemplo práctico.

En muchos escenarios, como parte de la API, debemos proporcionar puntos finales para buscar una entidad en función de ciertos criterios. Ahora, al usar JPA, ni siquiera tiene que escribir consultas, solo cree una interfaz y métodos con la nomenclatura específica de Spring-JPA. Para exponer tales API, creará una capa de servicio que simplemente llamará a estos métodos de repositorio y, finalmente, controladores que expondrán los puntos finales llamando a la capa de servicio.

Lo que Spring hizo aquí, le permite exponer estos puntos finales desde tales interfaces (repositorios) que generalmente son llamadas GET a la entidad de búsqueda y en segundo plano genera los archivos necesarios para crear los puntos finales finales. Entonces, si está utilizando @RepositoryRestResource, entonces no es necesario crear una capa de Servicio/Controlador.

Por otro lado, @RestController es un controlador que se ocupa específicamente de los datos json y el resto funciona como controlador. En resumen @Controller + @ResponseBody = @RestController.

Espero que esto ayude.

Vea mi ejemplo de trabajo y blog para lo mismo:

http://sv-technical.blogspot.com/2015/11/spring-boot-and-repositoryrestresource.html

https://github.com/svermaji/Spring-boot-with-hibernate-no-controller

Agradecemos que desees añadir valor a nuestra información añadiendo tu veteranía en las aclaraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *