Skip to content

Paginação Segura

A paginação segura é o processo de limitar a quantidade de dados retornados em uma única requisição de listagem, protegendo tanto o servidor quanto o navegador de sobrecargas de memória e processamento.

Por que paginar no Backend?

Se uma tabela de "Pacientes" tem 100 mil registros e o Frontend solicita todos de uma vez:

  1. O Banco de Dados sofrerá para ler tudo.
  2. O Servidor gastará muita memória e CPU para serializar o JSON.
  3. A rede ficará lenta devido ao tamanho do payload (megabytes).
  4. O Navegador do usuário travará ao tentar renderizar milhares de linhas no DOM.

Como fazer vs Como não fazer

✅ Como fazer

  • Implemente a paginação obrigatoriamente no Backend através de parâmetros como page e limit (ou offset e limit).
  • Defina um valor de limit máximo fixo no Backend (ex: no máximo 100 itens por página), mesmo que o Frontend solicite mais.
  • Utilize metadados na resposta para informar o Frontend sobre o estado da lista:
    json
    {
      "data": [...],
      "meta": {
        "totalItems": 1500,
        "itemCount": 20,
        "itemsPerPage": 20,
        "totalPages": 75,
        "currentPage": 1
      }
    }

❌ Como não fazer

  • Jamais envie a lista completa para o Frontend esperando que ele faça o "filtro" ou "paginação visual".
  • Não use valores de limit infinitos ou controlados exclusivamente pelo usuário sem validação.
  • Não esqueça de sanitizar e validar os parâmetros de paginação no Backend para evitar ataques de injeção SQL (especialmente em campos de ordenação dinâmica como sort_by).