如何在Spring HandlerInterceptorAdapter中为http响应添加标头?

时间:2016-07-14 14:48:06

标签: java spring spring-mvc spring-boot

在我的Spring Boot应用程序中,我正在尝试在afterCompletion()类的HandlerInterceptorAdapter方法中为我的回复添加标题。

控制器返回ResponseEntity<MyResource>对象,例如:

return new ResponseEntity<>(mr, HttpStatus.OK);

跟随POST请求。

在拦截器中,当我尝试向响应添加标头时,它不会被添加。

但是,当我更改控制器以返回响应时:

return new ResponseEntity<>(HttpStatus.OK);

然后它有效。

为什么只有在没有响应主体时才能添加标题?

当响应体存在时,有没有办法添加它?

1 个答案:

答案 0 :(得分:1)

感谢Ali Deghani的评论,我指出了正确的方向,并创建了一个扩展AbstractMappingJacksonResponseBodyAdvice类(在其下面实现ResponseBodyAdvice)的新类。

我也从http://cubiccow.blogspot.co.za/2014/10/api-versioning-of-rest-services.html

得到了提示

这使我能够在控制器处理后,根据某些条件成功修改带有新标题的响应。