是否可以在AbstractHttpMessageConverter writeInternal()方法中更改响应状态代码?
在我的AbstractHttpMessageConverter(扩展MappingJackson2HttpMessageConverter)中,我想将错误响应更改为200,并将实际状态代码(例如400)添加到json中的状态字段。
EDIT1
我正在返回代码:
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)用状态代码包装原始响应体(enity) b)将响应状态代码更改为200
因此,对于这两种变体,这意味着:
{ "status": 200, "response": { "name": "My Name" } }
{ "status": 400, "response": { "error": "My Error" } }
并且在这两种情况下都将返回http状态200。
我正在考虑通过扩展MappingJackson2HttpMessageConverter并覆盖writeInternal方法来做到这一点,但遗憾的是我无法更改状态代码。
注意我不想在我的控制器类中使用它。他们应该只返回基础json结构。
答案 0 :(得分:0)
不,这是不可能的。 HttpMessageConverter可以设置某些标头并写入消息正文,但它不能设置状态代码。也许您可以在将对象发送到HttpMessageConverter之前将状态代码更改为200并将属性设置为400。
我喜欢使用ResponseEntity对象,它允许您设置状态代码和对象,但是没有看到您的代码,我不知道它是否适合您。