Paginación de datos en una API con Spring Boot

alessandra.fernandez

dev back

A lo largo de mi trayectoria he realizado diferentes actividades, desde trabajo contable/administrativo hasta voluntariado a pie de calle dialogando con personas, así como ser oradora en una charla TEDx. Actualmente me encuentro ejecutando por primera vez el rol de Developer, mientras contínuo desarrollandome en esta area estudiando en la UTN y realizando diversos cursos por mi cuenta. Las tencologías en las que tengo experiencia son: HTML, CSS, JavaScript, C, C#, Java, SQL, MongoDB. Con principal interés en el desarrollo Front-end.

Soy una apasionada por la tecnología, mi principal objetivo es seguir aprendiendo cada día, desarrollar nuevas habilidades, crecer personal y profesionalmente.

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<Persona> 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<Persona> 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.