Java代码整洁-复杂的参数校验

1. 场景

一个请求往往会传入许多参数,但是都需要进行校验,但是总不能把所有参数进行 if 校验,这非常繁琐,我们可以使用注解更简单的实现

2. 注解进行校验

  • 对传入的实体类的字段加入注解
public class Student {
    
    

    @NotNull(message = "姓名为null")
    @NotEmpty(message = "姓名不能为空字符串")
    private String name;

    @NotNull(message = "分数不能为null")
    @Min(value = 0, message = "分数只能在0到100之间")
    @Max(value = 100, message = "分数只能在0到100之间")
    private Integer score;

    @NotNull(message = "手机号不能为null")
    @NotEmpty(message = "手机号不能为空字符串")
    @Length(min = 11, max = 11, message = "手机号长度只能为11位")
    private String mobile;
}
  • 在对象入口处加入@Vaild注解
    @PostMapping("addStudent")
    public String addStudent(@RequestBody @Valid Student student){
    
    
        return null;
    }
  • 发送请求的时候就会报 400 的错误
    在这里插入图片描述

3. 配置全局统一异常拦截器

上述返回的信息太复杂,我们可以配置统一异常拦截器,简化返回的错误信息

@ControllerAdvice
@ResponseBody
public class GlobalExceptionInterceptor {
    
    

    @ExceptionHandler(value = Exception.class)
    public String exceptionHandler(HttpServletRequest request, Exception e){
    
    
        String failMsg = null;
        if(e instanceof MethodArgumentNotValidException){
    
    
            failMsg = ((MethodArgumentNotValidException) e).getBindingResult().getFieldError().getDefaultMessage();
        }
        return failMsg;
    }
}
  • 直接返回错误信息

猜你喜欢

转载自blog.csdn.net/qq_33460865/article/details/104437213