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后端进行参数校验的主要内容,如果未能解决你的问题,请参考以下文章
后端参数校验器v1.0(调用一个方法校验所有参数并得到校验结果,且包括错误原因)