Joh*_*ohn 6 rest groovy spring spring-boot
我无法在REST api中覆盖默认的Spring引导错误响应.我有以下代码
@ControllerAdvice
@Controller
class ExceptionHandlerCtrl {
@ResponseStatus(value=HttpStatus.UNPROCESSABLE_ENTITY, reason="Invalid data")
@ExceptionHandler(BusinessValidationException.class)
@ResponseBody
public ResponseEntity<BusinessValidationErrorVO> handleBusinessValidationException(BusinessValidationException exception){
BusinessValidationErrorVO vo = new BusinessValidationErrorVO()
vo.errors = exception.validationException
vo.msg = exception.message
def result = new ResponseEntity<>(vo, HttpStatus.UNPROCESSABLE_ENTITY);
result
}
Run Code Online (Sandbox Code Playgroud)
然后在我的REST api中,我抛出了这个BusinessValidationException.调用此处理程序(我可以在调试器中看到它)但是我仍然有默认的spring boot REST错误消息.有没有办法覆盖并使用默认值作为后备?带有常规的Spring Boot版本1.3.2.最好的祝福
@ResponseStatus
从您的方法中删除.它会产生不良副作用,你不需要它,因为你正在设置HttpStatus.UNPROCESSABLE_ENTITY
你的ResponseEntity
.
警告:在异常类上使用此批注时,或者在设置此批注的reason属性时,
HttpServletResponse.sendError
将使用该方法.因此
HttpServletResponse.sendError
,响应被认为是完整的,不应再写入.此外,Servlet容器通常会编写HTML错误页面,因此会使用不适合REST API的原因.对于这种情况,最好使用aResponseEntity
作为返回类型并避免@ResponseStatus
完全使用.
归档时间: |
|
查看次数: |
6699 次 |
最近记录: |