spring boot对响应数据进行封装、改变响应头

背景

在项目中需求,对所有的请求进行拦截进行统一处理。优先想到的是使用spring boot的拦截器。但经实践发现,spring boot的拦截器只能在preHandle设置响应头,而在postHandle中没法改变响应头,也就无法实现按处理结果来设置响应头的目的,经查询资料,了解到拦截器无法设置带有@RequestBody注解的controller中的响应数据。具体细节有待深入研究。

之后的解决方法

扩展了ResponseBodyAdvice接口,并用@ControllerAdvice进行注解。最终实现了达到了封装响应数据、修改响应头的目的。代码如下:

@ControllerAdvice
public TestAdvice implements ResponseBodyAdvice {
    @Override
    public boolean supports(参数省略) {
        return true;
     }
     @Override
      public Object beforeBodyWrite(参数省略) {
          //这里面进行修改body、或者response header
      }
}

细节没写,仅做记录,以后用到时可查。

你可能感兴趣的:(spring boot对响应数据进行封装、改变响应头)