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;
    }
}

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值