2019独角兽企业重金招聘Python工程师标准>>>
使用@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请求过来,发现我们设置的捕捉异常已经生效了