SpringBoot 拦截器修改响应数据:使用 HandlerInterceptorAdapter
在 SpringBoot 中,可以使用 HandlerInterceptorAdapter 来拦截请求并修改响应数据。HandlerInterceptorAdapter 是一个拦截器适配器,它提供了三个方法来处理请求和响应:preHandle、postHandle 和 afterCompletion。
- preHandle 方法
preHandle 方法在请求处理之前被调用,可以在这里进行一些预处理操作,例如验证请求参数、鉴权等。如果返回 false,则请求不会被处理。
- postHandle 方法
postHandle 方法在请求处理之后,渲染视图之前被调用。可以在这里对响应数据进行修改,例如添加一些公共的响应头、修改响应码等。
- afterCompletion 方法
afterCompletion 方法在视图渲染完毕之后被调用,可以在这里进行一些资源清理工作。
下面是一个使用 HandlerInterceptorAdapter 实现修改响应数据的示例代码:
@Component
public class MyInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在请求处理之前进行预处理,例如验证请求参数、鉴权等
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 在请求处理之后,渲染视图之前进行响应数据的修改
response.setHeader('X-MyHeader', 'my value');
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 清理资源
}
}
在上面的代码中,我们定义了一个名为 MyInterceptor 的拦截器,并重写了 preHandle、postHandle 和 afterCompletion 方法。在 postHandle 方法中,我们通过 response.setHeader 方法添加了一个名为 X-MyHeader 的响应头。这样,在返回给客户端的响应数据中,就会包含这个自定义的响应头。
原文地址: https://www.cveoy.top/t/topic/n8sC 著作权归作者所有。请勿转载和采集!