Implementación de una API RESTful con Spring Framework (VIII): Paginación y ordenación de resultados

, , No Comments
Hasta ahora, el método con el que obteníamos los libros existentes en nuestro repositorio nos devolvía un JSON con todos los libros almacenados. Esto puede ser un problema si nuestro repositorio contiene demasiados libros, por lo que sería interesante poder realizar una paginación y ordenación de resultados.

Afortunadamente, Spring Framework cuenta con los mecanismos necesarios, no sólo para obtener resultados paginados, sino también para obtener dichos resultados ordenados en base a unos campos determinados.



Para ello, lo primero que tenemos que hacer es cambiar la clase de la que extiende nuestro repositorio. Ahora deberá extender de la clase PagingAndSortingRepository, que ofrece además de los métodos ya comentados, la posibilidad de realizar una paginación y ordenación de resultados.




Además, el fichero dispatcher-servlet.xml debe ser modificado para que el sistema MVC de Spring Framework sea capaz de interpretar las peticiones de paginación y ordenación de forma correcta. Para ello se añadirá a la configuración el bean PageableHandlerMethodArgumentResolver.



También cambiará la llamada de la clase LibroFacade. Ahora, el parámetro de entrada será un objeto de tipo Pageable y devolverá una página de libros Page<Libro>



Este cambio de parámetros debe también ser reflejado en el controlador LibroController que inicia el procesamiento de la llamada a nuestra API RESTful.



Una vez que hayamos configurado nuestra API RESTful, podremos realizar llamadas que requieran de paginación de la siguiente forma
GET /libros?page=0&size=1

Para realizar llamadas con ordenación serán de la siguiente forma
GET /libros?sort=titulo,asc

Estos parámetros de paginación y ordenación, pueden combinarse también. A continuación se muestra un ejemplo del resultado obtenido con una llamada de paginación y ordenación como la que sigue.

http://localhost:8080/spring.rest.jpa.ii/v1/libros?page=0&size=2&sort=titulo,asc

Este resultado contiene ciertos parámetros adicionales que informan del total de páginas de las que se dispone (totalPages), el total de elementos (totalElements) o si es la última página (last), además de devolver los libros que pertenecen a la página de resultados solicitada.


0 comentarios:

Publicar un comentario