Tamanho de página dinâmico (mas limitado) com Paginação Laravel

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.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *