Deixe os usuários decidir, mas não deixe os usuários abusarem.
Laravel torna a paginação um processo extremamente simples, basta chamar paginate()
em Eloquent e ser feito com ela. Hoje recebi uma solicitação de recurso onde eu tinha que permitir que a equipe de front-end decidisse o tamanho da página. Também é uma tarefa simples, você apenas dá como um parâmetro paginate($size);
. Algo assim:
Às vezes, isso é tudo o que você precisa porque seu modelo comercial pode lhe dizer se essa entidade pode crescer indefinidamente. Para este caso, cobramos por usuário e é muito improvável que uma empresa compre um milhão de usuários. No entanto, eu sei que nas próximas semanas vou trabalhar em algumas outras APIs que tenham milhões de registros, o que significa que não posso permitir um tamanho de página maior que um valor razoável.
Ótimo. Agora eu posso me certificar de que a API que estou expondo na internet não irá degradar nossos serviços se alguém definir page_size
para 1 bilhão. Mas ainda não se sente incrível porque eu tenho que me lembrar de configurar isso sempre que estou escrevendo um ponto final paginável .
Traço paginável
Por trás das cenas, o Laravel padrão para getPerPage
no Modelo Eloquent no caso de um tamanho de página específico não ser fornecido. Por padrão, Laravel é fornecido com 15
por página. Com uma característica paginável , podemos substituir esse método e implementá-lo em modelos que devem permitir que o Requerente nos diga quantos itens por página eles querem enquanto validam se eles não estão pedindo demais.
Basta usar a característica em seu modelo e o Controller
pode ser uma chamada de paginate()
fina. É uma coisa muito simples e pequena, mas bastante poderosa e conveniente se você está esperando escrever esse tipo de API pública.