java后端优雅进行参数校验

java后端优雅进行参数校验

利用注解的方式进行验证前端传入参数:

public class UavAddDto {

    // import javax.validation.constraints.*;
    
    @NotNull(message = "姓名不允许为null")
    @NotEmpty(message = "姓名不允许为空,请检查后重新重新传入值")
    public String name;
    
    @NotNull(message = "传入数据不允许为空")
    @Min(value = 0, message = "传入数据有误,数据必须在 0~100之内")
    @Max(value = 100, message = "传入数据有误,数据必须在 0~100之内")
    public Integer count;
    
    @Email(message = "传入邮件格式有误,请检查")
    public String email;
    
    @Length(min = 11, max = 11, message = "传入的电话号码长度有误,必须为11位")
    public String mobile;
    
}

加上 @Valid 注解,开启对传入对象的验证

@RestController
public class UavController {

    @Autowired
    private UavService uavService;

    @PostMapping("/add")
    public String add(@RequestBody @Valid UavAddDto uavAddDto) {
        uavService.saveOne(uav);
        return "Success";
    }

验证对传入参数的检查结果:

结果返回的结果太长,不符合我们传递给前端的结果。

这里我们做全局的异常拦截,只将错误的信息返回给前端。

@ControllerAdvice
@ResponseBody
public class GlobalExceptionInterceptor {

    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    public ExecutionResponse exceptionHandler(HttpServletRequest request, Exception e) {
        ExecutionResponse executionResponse = new ExecutionResponse();
        String failMsg = null;
        if (e instanceof MethodArgumentNotValidException) {
            // 拿到参数校验具体异常信息提示
            failMsg = ((MethodArgumentNotValidException) e).getBindingResult().getFieldError().getDefaultMessage();
            executionResponse.setFailed(failMsg);
        }
        // 将消息返回给前端
        return executionResponse;
    }

}

返回体:

// 返回体  这里用了 lombok 插件
@Getter
@Setter
public class ExecutionResponse {

    private Integer code = ResponseCodeEnum.RESPONSE_SUCCESS.code() ;

    private String message = "操作成功";

    public void setFailed(String message){
        this.code = ResponseCodeEnum.RESPONSE_FAILED.code();
        this.message = message;
    }
}

添加异常拦截器后结果为:

这样就优雅的将错误结果返回给前端。

发布了136 篇原创文章 · 获赞 45 · 访问量 11万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览