使用@RestControllerAdvice扩展参数验证
在上一节中我看可以看到参数验证返回的错误信息如下
{
"timestamp": "2018-10-25T06:44:31.196+0000",
"status": 400,
"error": "Bad Request",
"errors": [{
"codes": ["NotEmpty.passenger.name", "NotEmpty.name", "NotEmpty.java.lang.String", "NotEmpty"],
"arguments": [{
"codes": ["passenger.name", "name"],
"arguments": null,
"defaultMessage": "name",
"code": "name"
}],
"defaultMessage": "用户名不能为空",
"objectName": "passenger",
"field": "name",
"rejectedValue": "",
"bindingFailure": false,
"code": "NotEmpty"
}],
"message": "Validation failed for object='passenger'. Error count: 1",
"path": "/p/add"
}
事实上我们想要的只是
{"data":null,"succes":false,"msg":"用户名不能为空"}
那么我们就应该捕捉到参数验证异常之后,返回CommonResult对象
@RestControllerAdvice
class GlobalExcpetionHandler{
//验证参数
@ExceptionHandler(value = [MethodArgumentNotValidException::class])
fun validParameters(e:MethodArgumentNotValidException):CommonResult<Any>{
return CommonResult(null,false,e.bindingResult.allErrors.firstOrNull()?.defaultMessage ?: "")
}
}
再次post请求过来,发现我们设置的捕捉异常已经生效了
转载于:https://my.oschina.net/weidedong/blog/2252419
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101351.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...