Paginación de datos en una API con Spring Boot

Natural Tech House

Natural Tech House

En la comunidad de Natural Tech House compartimos nuestras ideas y experiencias. Somos curiosos por naturaleza, eso nos impulsa a descubrir, aprender y crecer en equipo teniendo siempre al conocimiento como protagonista.

Voy a compartir un muy pequeño ejemplo de cómo resolver el paginado de datos como respuesta de un endpoint.

Primero que nada se debe tener la clase con los objetos que mapeen nuestros datos.

Ejemplo

Clase Persona con sus atributos, constructor y getters/setters (estos se hacen con la annotation @data usando Spring Boot a través de una libreria externa llamada lombok), después en nuestra interface Repository (en este caso PersonaRepository) la cual debe estar extendiendo de PagingAndSortingRepository (es quien tiene toda la magia del paginado desde Spring) se definen los métodos que queremos utilizar, por ej para el caso:

Page findAllPage(Pageable pageable);

el cual devolvería un objeto Page con todos los datos del paginado, además de nuestro objeto actual.

Finalmente en el controlador con la compatibilidad con Spring Data Web habilitada, simplemente podemos usar a Pageable como parámetro de entrada para un método de controlador web y devolver un Page objeto al cliente:

@GetMapping(path = “/personas”)

Page loadPersonasPage(Pageable pageable) {

return personaRepository.findAllPage(pageable);

}

Para usarlo nuestra url quedaría de la siguiente forma:
http://localhost:8080/personas?page=1&size=5

dónde page es la página que queremos consultar y size es la cantidad de elementos que queremos que nos devuelva.

Con esto tendríamos suficiente para devolver en este caso un muy sencillo paginado de datos de objetos personas.

Lo que hago cuando me toca hacer una tarea en la cual no tengo experiencia previa por no haber realizado nada similar antes es buscar información que me sirva de referencia en internet.

Una vez encontrada la información lo que hago es intentar adaptar esa información al contexto/entorno en el que estoy trabajando, ya que eso es particular de cada proyecto. Obviamente nunca funciona la primera vez y es cuando se intenta, se intenta, se intenta, se pregunta, se vuelve a intentar, se vuelve a preguntar y así este proceso hasta que sale, pero lo más importante: hasta que aprendes.