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);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?