SpringBoot 接口参数验证 @Valid @Validate用法总结

pom文件添加依赖

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.2.2.Final</version>
        </dependency>

创建测试控制器

@RestController
@RequestMapping("/test")
public class TestController {
    @PostMapping("/postTest")
    public String postTest(@RequestBody @Validated PostTestParam param) {
        return "("+param.getParam1()+")";
    }
}

@Data
class PostTestParam{
    @NotBlank(message = "参数不能为空")
    private String param1;
}

启动项目发现参数校验已经生效了。但是接口返回数据为

{

    "timestamp": "2021-03-02T08:35:02.957+00:00",

    "status": 400,

    "error": "Bad Request",

    "message": "",

    "path": "/test/postTest"

}

 通过增加全局异常处理器,定义返回数据格式

@RestControllerAdvice
public class BadRequestExceptionHandler {
    private static final Logger logger = LoggerFactory.getLogger(BadRequestExceptionHandler.class);
    /**
     *  校验错误拦截处理
     *
     * @param exception 错误信息集合
     * @return 错误信息
     */
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public String validationBodyException(MethodArgumentNotValidException exception){

        BindingResult result = exception.getBindingResult();
      //返回自定义错误格式
      //fieldError.getDefaultMessage()为实体类中的message
        return result.getFieldError().getDefaultMessage();
    }
}

效果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值