java - 如何在 Spring HandlerInterceptorAdapter 中将 header 添加到 http 响应?

标签 java spring spring-mvc spring-boot

在我的 Spring Boot 应用程序中,我试图在 afterCompletion() 中的响应中添加 header 我的方法HandlerInterceptorAdapter类。

Controller 返回 ResponseEntity<MyResource>对象如:

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

跟随 POST请求。

在拦截器中,当我尝试向响应添加 header 时,它没有被添加。

但是,当我更改我的 Controller 以返回这样的响应时:

return new ResponseEntity<>(HttpStatus.OK);

然后就可以了。

为什么只有在响应主体不存在时才能添加 header ?

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

最佳答案

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

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

这使我能够在 Controller 处理响应后,根据特定条件,使用新 header 成功修改响应。

关于java - 如何在 Spring HandlerInterceptorAdapter 中将 header 添加到 http 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38377351/

相关文章:

java - Android ViewPager 问题

java - 使用 BeanUtils.copyProperties 复制特定字段?

javascript - 错误 : JSON. 解析:来自 Json 的 JSON 数据的第 1 行第 1 列出现意外字符

javascript - 您如何从 Police API 获取数据并将其显示在我的 Google map 上?

java - Spring MVC(Spring Boot)——RequestMapping继承

java - Java中Collection复制函数的工作原理

java - 列表更改列表中的值

java - 无需身份验证的端点需要 MockUser

java - Java 和 Spring 新手 - 我应该将学习重点放在哪些方面,以便能够快速使用 Spring 安全性?

java - 无需等待超时即可检查设备是否有 snmp 对象?