1

是否可以在 AbstractHttpMessageConverter writeInternal() 方法中更改响应状态代码?

在我的 AbstractHttpMessageConverter(扩展 MappingJackson2HttpMessageConverter)中,我想将错误响应更改为 200,并将实际状态代码(例如 400)添加到 json 中的状态字段。

编辑1

我返回的代码如下:

JSONObject json= new JSONObject();
json.put("name", "My Name");
return new ResponseEntity<JSONObject>(json, HttpStatus.OK);

或者如果出现错误:

JSONObject json= new JSONObject();
json.put("error", "My Error");
return new ResponseEntity<JSONObject>(json, HttpStatus.BAD_REQUEST);

我想在某个地方截获响应主体,并且:a)用状态代码包装原始响应主体(实体)b)将响应状态代码更改为 200

因此,对于这两种变体,这意味着:

{ "status": 200, "response": { "name": "My Name" } }

{ "status": 400, "response": { "error": "My Error" } }

在这两种情况下,都会返回 http 状态 200。

我正在考虑通过扩展 MappingJackson2HttpMessageConverter 并覆盖 writeInternal 方法来做到这一点,但不幸的是我无法更改状态代码。

注意我不想在我的控制器类中这样做。他们应该只返回基本的 json 结构。

4

1 回答 1

0

不,这是不可能的。HttpMessageConverter 可以设置某些标头并写入消息的正文,但它不能设置状态码。也许您可以在将对象发送到 HttpMessageConverter 之前将状态码更改为 200 并将属性设置为 400。

我喜欢使用 ResponseEntity 对象,它允许您设置状态代码以及对象,但没有看到您的代码,我不知道它是否适合您。

于 2013-08-22T14:20:46.353 回答