Paginação
A paginação é crucial no design de qualquer API de modo a permitir a manipulação de um grande volume de dados em coleções de maneira eficiente.
A API DEVE implementar uma paginação orientada ao número da Página solicitada bem como possibilitar estabelecer um Limite ao número de registros retornados a cada página.
Ambos o número da Página e o Limite de registros por página DEVEM ser fornecidos como Query Parameters pagee limit, respectivamente, para o endpoint de consulta da coleção.
pagedeve ser um valor opcional, maior do que zero, assumindo1como valor padrão.limitdeve ser um valor opcional, maior do que zero, sendo seu padrão razoável para o contexto da coleção.
Quanto a representação do resultado da consulta, esta DEVE fornecer no mínimo os seguintes campos para a paginação orientada ao número de Página:
- items: a coleção de objetos resultado da operação de consulta
- pageCount: a quantidade de registros na página atual
- page: a página representando a operação atual de consulta
- limit: o limite de registros na página atual
- total: o total de registros não considerando a paginação
- totalPages: a quantidade de páginas abrangendo o total de registros
- hasMore: indicador de existencia de próxima página para consulta
Exemplo
Obtendo uma coleção de usuarios usando parametros de página e limite.
Requisição GET
GET /users?page=4&limit=2 HTTP/1.1Accept: application/jsonResposta HTTP
HTTP/1.1 200 OKContent-Type: application/json
{ "items": [ { "id": 7, "email": "arthur@magazord.com.br", "name": "Arthur" }, { "id": 8, "email": "lais@magazord.com.br", "name": "Lais" } ], "pageCount": 2, "page": 4, "limit": 2, "total": 30, "totalPages": 15, "hasMore": true}