Olá Davi!
Entendi sua preocupação com a segurança na paginação. É realmente importante limitar a quantidade de dados retornados para evitar sobrecarga e possíveis ataques.
Para garantir que o número máximo de registros retornados seja sempre 10, mesmo que um valor maior seja enviado na URL, você pode criar uma lógica personalizada no seu controlador. Aqui está um exemplo de como fazer isso:
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/medicos")
public class MedicoController {
@GetMapping
public Page<Medico> listarMedicos(
@PageableDefault(size = 10) Pageable pageable,
@RequestParam(required = false) Integer size) {
// Verifica se o parâmetro size foi enviado e se é maior que 10
if (size != null && size > 10) {
pageable = PageRequest.of(pageable.getPageNumber(), 10, pageable.getSort());
}
// Aqui você chama o serviço que retorna a página de médicos
return medicoService.listarMedicos(pageable);
}
}
Nesse exemplo, mesmo que o parâmetro size
seja enviado na URL com um valor maior que 10, o PageRequest.of
redefine o tamanho da página para 10.
Espero ter ajudado e bons estudos!