前言
在日常的开发过程中,后端需要经常对参数进行校验,比如某参数不能为空,格式等,只有校验通过后才可以执行后续的业务逻辑,否则就要在接口返回错误信息给前端。
一般情况下,可以使用if…else…来校验参数,但是当需要校验的参数过多时,使用if…else…校验会写非常的代码,不利于维护,为了让我们的代码看起来更优雅,我们可以使用validation来对参数进行校验。
一、导入依赖
java"> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>
二、validation中的注解说明
- @Validated:用于在 Spring 控制器层方法参数进行验证
java"> @PostMapping(value = "/collect")public AjaxResult collect(@Validated @RequestBody Collect collect) {//业务代码}
- @Valid是 Java 标准的一部分,用于声明需要对嵌套对象进行递归验证。
java"> //用在实体类中@Validprivate DeptParam deptParam;
- @NotNull:注解用于检查被注解的元素值不为 null。适用于字符串、集合、Map 等任何对象类型,但不适用于基本数据类型(如 int、long 等)
- @NotBlank:用于检查被注解的字符串元素不为 null 且去除两端空白字符后长度大于 0,只适用于字符串类型。
- @NotEmpty:注解用于检查被注解的元素不为 null 且不为空,适用于字符串、集合、Map 等
- @Pattern:指定字段必须符合指定的正则表达式
- @Email:指定字段必须符合Email格式
- @Size:指定字段的长度范围
三、统一格式返回提示信息
使用validation 进行参数校验时,会抛出MethodArgumentNotValidException异常,我们只需要捕捉异常,并且将异常内容返回给前端
java">@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {/*** 校验参数*/@ExceptionHandler(MethodArgumentNotValidException.class)public AjaxResult handleValidationExceptions(MethodArgumentNotValidException e) {String msg = Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage();return AjaxResult.error(msg);}
}