gpt4 book ai didi

spring - 如何验证 Pageable 的大小?

转载 作者:行者123 更新时间:2023-12-01 11:18:21 27 4
gpt4 key购买 nike

我正在使用 org.springframework.data.domain.Pageable和我的 @RestController .

如何验证或限制页面大小?

没有任何验证,当客户端调用 size 时的 10000 .实际pageSize2000 .

我认为,这可能会导致最后一页出现错误信号。

我如何验证它并通知客户?说 400 ?

最佳答案

您可以编写自定义注释来验证 Pageable目的

@Constraint(validatedBy = PageableValidator.class)
@Target( { ElementType.METHOD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
public @interface PageableConstraint {
String message() default "Invalid pagination";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};

int maxPerPage() default 100;;
}

及其实现
public class PageableValidator implements
ConstraintValidator<PageableConstraint, Pageable> {

private int maxPerPage;

@Override
public void initialize(PageableConstraint constraintAnnotation) {
maxPerPage=constraintAnnotation.maxPerPage();
}

@Override
public boolean isValid(Pageable value, ConstraintValidatorContext context) {
return value.getPageSize()<=maxPerPage;
}
}

并且您可以像任何其他 javax 验证注释一样在您的 Controller 上使用它。
@RestController
@RequestMapping("/api")
@Validated
public class EmployeeRestController {

@Autowired
private EmployeeService employeeService;

@GetMapping("/employees")
public List<Employee> getAllEmployees(@PageableConstraint(message = "Invalid page size",maxPerPage = 400) Pageable pageable) {
return employeeService.getAllEmployees();
}
}

关于spring - 如何验证 Pageable 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47468250/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com