java后端进行参数校验

Posted 画画的Baby~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 插件
@Date
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;
}

}
`

以上是关于java后端进行参数校验的主要内容,如果未能解决你的问题,请参考以下文章

Java Bean Validation 最佳实践

java后端参数校验validaction(用法详解)

后端参数校验器v1.0(调用一个方法校验所有参数并得到校验结果,且包括错误原因)

瞧瞧人家用SpringBoot写的后端API接口,那叫一个优雅

SpringBoot 如何进行参数校验,老鸟们都这么玩的!

java中如何进行密码校验