gpt4 book ai didi

json - 如何在 Spring Boot 中覆盖默认的 JSON 响应

转载 作者:行者123 更新时间:2023-12-04 22:49:54 25 4
gpt4 key购买 nike

当 Controller 以 400-BadRequest 响应时,我的 Spring Boot 应用程序返回低于 json 响应。

{
"readyState": 4,
"responseText": "{\r\n \"success\" : false,\r\n \"projects\" :null,\r\n \"httpStatusCode\" : \"400\",\r\n \"message\" : \"Request Processing failed.\",\r\n \"requestErrors\" : [ {\r\n \"error\" : \"platform required.\"\r\n }, {\r\n \"error\" : \"id required.\"\r\n }, {\r\n \"error\" : \"name required.\"\r\n } ]\r\n}",
"responseJSON": {
"success": false,
"projects": null,
"httpStatusCode": "400",
"message": "Request Processing failed.",
"requestErrors": [
{
"error": "platform required."
},
{
"error": "id required."
},
{
"error": "name required."
}
]
},
"status": 400,
"statusText": "Bad Request"
}

但在这里我不想看到 json 元素 responseText , status , 和 statusText ,因为我的 JSON 对象本身具有这些信息。

这是我的 CustomErrorAttributes类(class)。
public class CustomErrorAttribute implements ErrorAttributes {
@Override
public Map<String, Object> getErrorAttributes(RequestAttributes requestAttributes, boolean includeStackTrace) {
Map<String, Object> errorAttributes = new LinkedHashMap<String, Object>();
errorAttributes.put("timestamp", new Date());
return errorAttributes;
}

@Override
public Throwable getError(RequestAttributes requestAttributes) {
return new IllegalStateException("Illegal State of the request.");
}
}

Java配置:
@Bean
public ErrorAttributes customErrorAttribute(){
return new CustomErrorAttribute();
}

我尝试注册 ErrorAttributes 的自定义实现如 @Bean如指定 here

但没有运气,请任何帮助。谢谢。

最佳答案

你需要让 Spring 知道你的 CustomErrorAttribute执行。

只需添加一个配置类(或简单地将 @Bean 部分添加到您现有的 Spring 配置类之一),例如:

@Configuration
public class MvcErrorConfig {

@Bean
public CustomErrorAttribute errorAttributes() {
return new CustomErrorAttribute();
}

}

一切都开箱即用。

This文档的一部分包含所有详细信息。
相关的 Spring Boot 自动配置类是 ErrorMvcAutoConfiguration

关于json - 如何在 Spring Boot 中覆盖默认的 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30844787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com