在 Spring Boot 中可以通过自定义拦截器来实现在所有请求头中加入公共参数。下面是一个示例:

  1. 创建一个拦截器类 CommonParamsInterceptor,实现 HandlerInterceptor 接口。
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CommonParamsInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 在请求头中加入公共参数
        request.addHeader('commonParam1', 'value1');
        request.addHeader('commonParam2', 'value2');
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        // 在请求处理完成后进行清理操作(可选)
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // 在整个请求处理完成后进行清理操作(可选)
    }
}
  1. 创建一个配置类 WebMvcConfig,继承 WebMvcConfigurerAdapter 类,并注册拦截器。
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册拦截器
        registry.addInterceptor(new CommonParamsInterceptor());
    }
}
  1. 在 application.properties 或 application.yml 中配置拦截器的路径。
# application.yml
spring:
  mvc:
    interceptor:
      exclude-path:
        - /path1
        - /path2

这样就可以在所有请求的请求头中加入公共参数了。需要注意的是,拦截器可能会对一些特殊的请求(如静态资源文件)产生影响,可以通过配置 exclude-path 来排除这些请求。

SpringBoot 如何在所有请求头中添加公共参数?

原文地址: https://www.cveoy.top/t/topic/qyEe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录