请求流程
1: 流程描述:
1:app发起请求
2: MethodValidationPostProcessor 处理验证
- 2.1:成功进入controller
- 2.2: 抛出异常被默认处理(MethodArgumentNotValid)
2: 代码实例:
2.1controller上声明需要对数据进行校验
@RestController
@Validated
public class TestController {
@RequestMapping(value = "/test/query")
@ResponseBody
public Object query(@Min(value = 3) int id, @NotNull String name) {
return BaseResponse.builder().code("200").message("success").info("good").data("Hello Word").build();
}
}
2.2 验证通过
{
"code": "200",
"info": "good",
"message": "success",
"data": null
}
2.3 验证不通过(默认异常返回如下)
{
"timestamp": "2022-03-24T06:53:47.846+00:00",
"status": 500,
"error": "Internal Server Error",
"path": "/test/query"
}
3:BindingResult 使用
3.1 :流程描述
- 1:参数列表增加 BindingResult,增加后验证将不会抛出异常
- 2:异常信息通过BindingResult返回,在业务代码做出后续处理
- 3: hasErrors() 判断是否有错误
- 4: getAllErrors()。获取异常信息
3.2 :代码实例
@RestController
@Validated
public class TestController {
@RequestMapping(value = "/test/query")
@ResponseBody
/*
* 1:参数列表增加 BindingResult,增加后验证将不会抛出异常
* 2:异常信息通过BindingResult返回,在业务代码做出后续处理
*/
public Object query(@Min(value = 3) int id, @NotNull String name,BindingResult bindingResult) {
//hasErrors() 判断是否有错误,验证是否通过
if(bindingResult.hasErrors()){
//hasErrors() 获取异常信息
bindingResult.getAllErrors();
}
return BaseResponse.builder().code("200").message("success").info("good").data("Hello Word").build();
}
}