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:
- O Banco de Dados sofrerá para ler tudo.
- O Servidor gastará muita memória e CPU para serializar o JSON.
- A rede ficará lenta devido ao tamanho do payload (megabytes).
- 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
pageelimit(ouoffsetelimit). - Defina um valor de
limitmá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
limitinfinitos 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).