springboot-validated 随笔(2)Hello Word

请求流程

Y
N
app
MethodValidationPostProcessor
验证
controller
throw exption
处理业务

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 使用

app
MethodValidationPostProcessor
验证
controller
处理业务

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

@validated注解实现 spring基于PostProcessor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值