在一个基于React式框架的spring Boot rest控制器中,如何在全局级别(类似于spring mvc中的全局异常处理器)根据应用程序抛出的异常类型配置错误响应状态,仍然保留spring boot生成的json错误?
例如,如果抛出IllegalArgumentException,则响应将是:
HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 191
{
"timestamp": "2023-04-05T06:52:30.521+00:00",
"path": "request/path",
"status": 400,
"error": "Bad Request",
"requestId": "876c0e0b-1"
}
而不是默认值:
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 191
{
"timestamp": "2023-04-05T06:52:30.521+00:00",
"path": "request/path",
"status": 500,
"error": "Internal Server Error",
"requestId": "876c0e0b-1"
}
谢谢
1条答案
按热度按时间b4lqfgs41#
以保留spring Boot 生成的json错误
最好(我认为):
扩展
ResponseEntityExceptionHandler
例如:
(this知道你的
application.properties
.. esp.spring.webflux.problemdetails.enabled
)自定义处理“常见异常”
只是根据异常类型更改状态
覆盖相应的
handleXXXException
方法,在这个(400)场景中,例如(handleResponseStatusException
):常见处理“自定义异常”
最佳:
1.让您的“自定义异常”扩展
ErrorResponseException
:1.用自定义异常处理程序处理它(重用父方法;):
详情,最好:“浏览”javadoc,源代码,“层次结构”&“使用”提到的类。
(springboot-webflux)默认的
@ControllerAdvice/ResponseEntityExceptionHandler
配置为org.springframework.boot.autoconfigure.web.reactive.ProblemDetailsExceptionHandler
。