¿Querés crear una Api desde tu entidad automáticamente sin código boilerplate? Este módulo de Spring tiene tu respuesta!
Spring Boot ofrece un fantástico soporte para acceder a los datos con JPA a través de sus interfaces, del tipo Repository. Si a esto le añadimos la facilidad con que se crean servicios REST, podremos hacer una aplicación ofreciendo una API para acceder a nuestros datos muy fácilmente.
Pero si queremos implementar HATEOAS (Hypermedia as the Engine of Application State) en nuestro proyecto o si hay muchos criterios sobre los que debemos acceder a los datos, deberemos escribir bastante código. Y mas cantidad de código, implica mayor esfuerzo en el mantenimiento de nuestra aplicación. Para solucionar este problema Spring Boot provee el paquete Spring Data Rest con el cual con pocas lineas podremos crear una API para acceder a las tablas de nuestra base de datos.
Lo primero que necesitamos en agregar la dependecia en el pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
Con esta dependecia ya podemos utilizar la propertie para configurar la ruta donde quedara expuesta el api:
spring.data.rest.base-path=/api
@RepositoryRestResource(path = "customers", collectionResourceRel = "customers")
{
"name":"nombre cliente 1",
"address":"direccion cliente 1",
"telephone":"telefono cliente 1",
"city":null,
"_links":{
"self":{
"href":"http://localhost:8080/api/customer/1"
},
"customerEntity":{
"href":"http://localhost:8080/api/customer/1"
}
}
}
{
"_embedded":{
"customers":[
{
"name":"nombre cliente 1",
"address":"direccion cliente 1",
"telephone":"telefono cliente 1",
"city":{
"name":"Logroño",
"province":"La Rioja"
},
"_links":{
"self":{
"href":"http://localhost:8080/api/customer/1"
},
"customerEntity":{
"href":"http://localhost:8080/api/customer/1"
}
}
}
]
},
"_links":{
"self":{
"href":"http://localhost:8080/api/customer"
},
"profile":{
"href":"http://localhost:8080/api/profile/customer"
},
"search":{
"href":"http://localhost:8080/api/customer/search"
}
}
}
{
"name":"nombre cliente 1",
"address":"direccion cliente 1",
"telephone":"telefono cliente 1",
"city":{
"name":"Logroño",
"province":"La Rioja"
},
"_links":{
"self":{
"href":"http://localhost:8080/api/customer/1"
},
"customerEntity":{
"href":"http://localhost:8080/api/customer/1"
}
}
}
{
"_embedded":{
"customers":[
{
"name":"nombre cliente 1",
"address":"direccion cliente 1",
"telephone":"telefono cliente 1",
"city":{
"name":"Logroño",
"province":"La Rioja"
},
"_links":{
"self":{
"href":"http://localhost:8080/api/customer/1"
},
"customerEntity":{
"href":"http://localhost:8080/api/customer/1"
}
}
}
]
},
"_links":{
"self":{
"href":"http://localhost:8080/api/customer/search/findByNameIgnoreCaseContaining?name=Clien"
}
}
}