spring-boot-starter-web 中默认的JSON 错误响应从何而来,如何调整?
Where does the default JSON errors response in spring-boot-starter-web comes from and how to adjust it?
到目前为止,我对 spring-boot 项目非常满意,但我想更深入地了解一切是如何粘合在一起的。使用 spring-boot-starter-web、spring-boot-starter-data-jpa 和 hateoas 我能够 assemble 一个工作良好的 REST 后端。但我想知道,它是如何完成的,例如DataIntegrityViolation 可以像这样很好地转换为 JSON 输出。我实际上喜欢所提供的信息,但我想知道如何重用转换为 JSON 的 DataObject。我只是不明白,它来自哪里以及它在哪里配置。希望你们能帮助我或指出文档的相关部分甚至源代码。
{
"readyState": 4,
"responseText": "{\"timestamp\":1423155860435,\"status\":500,\"error\":\"Internal Server Error\",\"exception\":\"org.springframework.dao.InvalidDataAccessResourceUsageException\",\"message\":\"could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet\",\"path\":\"/api/catalog/colorfamilies\"}",
"responseJSON": {
"timestamp": 1423155860435,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.dao.InvalidDataAccessResourceUsageException",
"message": "could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet",
"path": "/api/catalog/colorfamilies"
},
"status": 500,
"statusText": "Internal Server Error"
}
感谢您的帮助,
马吕斯
输出由 Spring Boot 的 BasicErrorController
创建。当您的应用程序未使用 Spring MVC(例如 ExceptionHandler
或 ControllerAdvice
)或容器错误页面处理异常时,它用作回退。
JSON 是由 ErrorAttributes
的实现创建的。默认情况下,Spring 引导将使用 DefaultErrorAttributes
。您可以通过创建自己的 @Bean
实现 ErrorAttributes
.
来自定义它
有关详细信息,请参阅 Spring 引导文档的 error handling section。
到目前为止,我对 spring-boot 项目非常满意,但我想更深入地了解一切是如何粘合在一起的。使用 spring-boot-starter-web、spring-boot-starter-data-jpa 和 hateoas 我能够 assemble 一个工作良好的 REST 后端。但我想知道,它是如何完成的,例如DataIntegrityViolation 可以像这样很好地转换为 JSON 输出。我实际上喜欢所提供的信息,但我想知道如何重用转换为 JSON 的 DataObject。我只是不明白,它来自哪里以及它在哪里配置。希望你们能帮助我或指出文档的相关部分甚至源代码。
{
"readyState": 4,
"responseText": "{\"timestamp\":1423155860435,\"status\":500,\"error\":\"Internal Server Error\",\"exception\":\"org.springframework.dao.InvalidDataAccessResourceUsageException\",\"message\":\"could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet\",\"path\":\"/api/catalog/colorfamilies\"}",
"responseJSON": {
"timestamp": 1423155860435,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.dao.InvalidDataAccessResourceUsageException",
"message": "could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet",
"path": "/api/catalog/colorfamilies"
},
"status": 500,
"statusText": "Internal Server Error"
}
感谢您的帮助, 马吕斯
输出由 Spring Boot 的 BasicErrorController
创建。当您的应用程序未使用 Spring MVC(例如 ExceptionHandler
或 ControllerAdvice
)或容器错误页面处理异常时,它用作回退。
JSON 是由 ErrorAttributes
的实现创建的。默认情况下,Spring 引导将使用 DefaultErrorAttributes
。您可以通过创建自己的 @Bean
实现 ErrorAttributes
.
有关详细信息,请参阅 Spring 引导文档的 error handling section。