O que é a paginação de uma API e por que ela evita respostas enormes?

Publicado em 2026-10-20 por frfrand

Paginación de APIs con limit/offset y cursores: cómo devolver listas grandes, manejar cambios de datos y evitar errores de rendimiento.

O que é a paginação de uma API e por que ela evita respostas enormes?

A paginação permite devolver uma lista de dados por partes em vez de enviar todos os registros de uma só vez. É comum em catálogos, históricos de pedidos e APIs com milhares ou milhões de elementos.

Se uma loja tem dois milhões de produtos, baixar todo o banco de dados cada vez que alguém abre o catálogo não parece uma boa ideia.

A comparação com uma biblioteca

Imagine que você peça livros de programação. A bibliotecária não esvazia todas as prateleiras em cima da mesa. Ela mostra uma seleção e permite que você passe para os próximos resultados.

Uma API paginada faz algo parecido: recebe informações sobre quanto retornar e a partir de qual ponto continuar.

A paginação por limit e offset

Uma API poderia oferecer:

GET /api/productos?limit=20&offset=40

Isso solicita até vinte produtos a partir de uma determinada posição. É simples de implementar e permite construir páginas tradicionais: primeira, segunda, terceira.

Mas tem limites. Com muitas linhas, algumas consultas com offset elevado podem ser custosas. E se produtos forem adicionados ou removidos entre as solicitações, o usuário pode ver registros repetidos ou pular outros.

Por isso, não se deve assumir que a «página 4» identifica permanentemente o mesmo conjunto de dados.

Paginacao por cursor

Outra técnica utiliza um cursor que representa uma posição lógica de continuação. A resposta pode incluir uma lista e um valor como next_cursor.

O cliente envia esse cursor para recuperar o próximo lote, sem necessariamente depender de contar desde o início a cada vez.

Essa abordagem pode funcionar melhor para listas que mudam com frequência, mas o cursor deve ser projetado com uma ordem estável e atributos apropriados. Não é uma chave mágica que resolve qualquer problema de consistência.

O que uma boa API deveria devolver?

Além dos itens, pode incluir um indicador de continuação e links ou parâmetros para solicitar o próximo conjunto. Às vezes é útil informar o total de registros, mas calculá-lo também pode ter custos.

O importante é documentar claramente as regras: limite máximo de página, ordem aplicada, filtros admitidos e comportamento se o cursor expirar ou for inválido.

O cliente não deveria poder solicitar arbitrariamente vinte milhões de registros se essa operação puder afetar todos os outros usuários.

A ordem é indispensável

Imagine consultar primeiro os vinte pedidos mais recentes. Se você não definir explicitamente como ordená-los, o mecanismo de banco de dados não promete devolver sempre uma sequência lógica. A paginação sem ordem estável pode produzir resultados confusos.

É útil ordenar por uma data e resolver empates com um identificador único. A estratégia exata depende do mecanismo e de como os registros são inseridos.

E como se compara com uma busca?

Buscar e paginar são problemas distintos. Uma busca decide quais registros correspondem aos filtros; a paginação decide quantos são entregues e como continuar.

Se o usuário alterar os filtros, normalmente ele deve reiniciar o percurso. Reutilizar o cursor anterior com outra consulta pode gerar resultados incorretos.

Três erros que aparecem em produção

Permitir limites enormes: uma única solicitação pode consumir muita memória ou tempo de processamento.

Omitir a ordenação: as páginas deixam de ter um significado consistente.

Inventar um total exato sem medir: em bancos grandes, calcular o número exato pode ser mais caro do que devolver a página solicitada.

Para APIs sensíveis, também é necessário verificar a autorização: paginar não deve permitir obter registros de outras pessoas.

Onde entra o ArduMaker?

Se você publicar um backend em um VPS da ArduMaker, a paginação ajuda a reduzir a carga de suas consultas e o volume de dados transferidos. O painel pode facilitar a implantação, mas o comportamento da API e seu banco de dados corresponde ao projeto.

Em resumo: paginar não é dividir uma tela visual em páginas. É projetar como recuperar grandes conjuntos de dados de forma eficiente, previsível e segura.

Fontes: Guia de design de APIs da Microsoft · LIMIT e OFFSET no PostgreSQL.

O que é a paginação de uma API e por que ela evita respostas enormes?
  • API
  • paginación
  • backend

Continuar lendo

Todos os artigos · Planos VPS