Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When to use @RestController vs @RepositoryRestResource

I have been looking at various examples of how to use Spring with REST. Our end target is a Spring HATEOAS/HAL setup

I have seen two distinct methods for rendering REST within Spring

  1. Via @RestController within a Controller

  2. Via @RepositoryRestResource within a Repository

The thing I am struggling to find is why would you use one over the other. When trying to implement HAL which is best?

Our database backend is Neo4j.

like image 270
code Avatar asked Apr 02 '14 23:04

code


People also ask

What is @RestController used for?

RestController: RestController is used for making restful web services with the help of the @RestController annotation. This annotation is used at the class level and allows the class to handle the requests made by the client.

Why is Spring data rest not recommended in real world applications?

Real-world applications should avoid using Spring Data REST because the entities are exposed as RESTful Services. The two most critical considerations in designing a RESTful service are the domain model and the consumers.

What is the use of @RestController in Spring?

Spring RestController annotation is used to create RESTful web services using Spring MVC. Spring RestController takes care of mapping request data to the defined request handler method. Once response body is generated from the handler method, it converts it to JSON or XML response.

Should we use Spring data rest?

If you need to be fast and want to write the minimal amount of code go for spring data rest. A spring alternative to spring-data-rest is using spring MVC directly to create a REST API on your own. Spring-data-jpa would still be used to implement the data access layer.


1 Answers

Ok, so the short story is that you want to use the @RepositoryRestResource since this creates a HATEOAS service with Spring JPA.

As you can see here adding this annotation and linking it to your Pojo you have a fully functional HATEOAS service without having to implement the repository method or the REST service methods

If you add the @RestController then you have to implement each method that you want to expose on your own and also it does not export this to a HATEOAS format.

like image 162
zpontikas Avatar answered Nov 14 '22 02:11

zpontikas