定制和删除非必需的领域从zalando问题回复体在 Spring 开机

jdzmm42g  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(260)

我面临一个问题,在springboot中验证字段时抛出了一个zalando问题错误。我通过调用超级构造函数并传递所需的字段来扩展abstractthrowableproblem,从而定制了响应体。
我将status字段设置为bad\u request,然后将自定义对象传递给带有Map的'parameters'参数。
直到现在,一切都很好。我在响应体中得到了一个400错误的请求http状态代码以及自定义Map对象。
现在的问题是,“status”字段也出现在响应主体中,这是因为我在调用超级构造函数时设置了它。
我想知道如何只在http状态码部分中使用400,而不在响应体中使用400。我只需要在响应体中使用自定义Map对象。

Actual response:
Response Http status code - 400 BAD_REQUEST
Response body -
{
"status": 400,
"appError": "The name field that you filled in has Invalid special characters."
}

Expected response:
{
"appError": "The name field that you filled in has Invalid special characters."
}

我写的zalando问题类如下:

class MyAppZalandoProblem extends AbstractThrowableProblem {

Map<String, Object> myMap = new HashMap<>();
myMap.put("appError", "The name field that you filled in has Invalid special characters.");

MyAppZalandoProblem() {
 super(null, null, Status.BAD_REQUEST,  null, null, null, myMap);
}

}
xmakbtuz

xmakbtuz1#

简短的回答

你就是不能。
这不是返回http问题的推荐方法:rfc7807
顺便说一句,zalando问题库的维护人员拒绝允许这种定制。

相关问题