小编典典

spring-boot-starter-web中默认的JSON错误响应来自何处以及如何进行调整?

spring-boot

到目前为止,我对spring-boot项目感到非常满意,但是我想对所有东西如何粘合在一起有更深入的了解。使用spring-boot-starter-
web,spring-boot-starter-data-
jpa和hateoas,我能够组装出一个不错的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"
}

感谢您的帮助,Marius


阅读 461

收藏
2020-05-30

共1个答案

小编典典

输出由Spring Boot的创建BasicErrorController。当您的应用程序未使用Spring
MVC(例如,带有ExceptionHandlerControllerAdvice)或容器错误页面处理异常时,它用作备用。

JSON是由的实现创建的ErrorAttributes。默认情况下,Spring
Boot将使用DefaultErrorAttributes。您可以通过创建自己的@Bean实现来自定义此功能ErrorAttributes

有关更多信息,请参见Spring Boot文档的错误处理部分

2020-05-30