OpenFeign 远程调用时携带请求头参数

在微服务开发过程中必不可免的使用远程调用工具,这里以OpenFeign为例来解决跨服务调用时如何携带参数。

其实办法很简单,我们只需要自定义一个拦截器实现Feign 提供的RequestInterceptor接口,使用Spring 提供的RequestContextHolder工具类来获取当前请求的对象,然后从请求对象中获取需要的请求头信息即可,代码如下:

import feign.RequestInterceptor;
import feign.RequestTemplate;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

@Component
public class FeignInterceptor implements RequestInterceptor {

    public void apply(RequestTemplate requestTemplate){
        // 从当前线程获取请求上下文对象
        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
        if(null != requestAttributes) {
            ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)requestAttributes;
            HttpServletRequest request = servletRequestAttributes.getRequest();
            // 从当前对象中获取请求头中的token
            String token = request.getHeader("token");
            // 将获取到的token加入到请求模板中
            requestTemplate.header("token", token);
        }
    }
}
posted @   LilyFlower  阅读(311)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示