要使用 Java 验证 API,我们必须添加一个 JSR 303 实现,例如 hibernate-validator
implementation group: 'org.hibernate.validator', name: 'hibernate-validator', version: '8.0.0.Final'
然后再 Controller 增加注解 @Validated
@Validated
public class GridController {
...
}
对需要验证的参数配置对应的注解,例如:@NotBlank @Size(max = 10) @Min @Max 等
@PostMapping(POST_TEST)
public JSONResponse<Boolean> test(
@RequestParam @Min(value = 5,message = "最小ID不能小于5") int id) {
log.info("GRID TEST ID = {}",id);
return JSONResponse.success(true);
}
最重要的一点,是需要配置验证的执行器
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
配置好之后,访问时,如果参数不符合要求,会抛出异常:
curl --location --request POST 'http://127.0.0.1:8011/grid/test?id=0'
异常信息
javax.validation.ConstraintViolationException: test.arg0: 最小ID不能小于5
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:120)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
...