Feign远程调用丢失请求头问题
问题
- 项目中我使用feign进行远程调用时,在请求头设置了参数(UserId),结果在调用方却收获取不到...

解决办法
- feign提供了一个拦截器,在远程调用之前执行

核心代码
package com.qbb.qmall.web.feign;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
/**
* @author QiuQiu&LL (个人博客:https://www.cnblogs.com/qbbit)
* @version 1.0
* @date 2022-06-04 23:04
* @Description:远程调用拦截器
*/
@Component
public class UserHeaderRequestInterceptor implements RequestInterceptor {
/**
* ThreadLocal<HttpServletRequest> : 可以使用ThreadLocal自己存
* RequestContextHolder : 也可以使用Spring框架自己提供的
*/
@Override
public void apply(RequestTemplate requestTemplate) {
// 每个线程会有一个请求对象
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
// 获取原来请求中的数据
String userId = requestAttributes.getRequest().getHeader("UserId");
String UserTempId = requestAttributes.getRequest().getHeader("UserTempId");
if (userId != null) {
// 设置到通过模板new的新的请求中
requestTemplate.header(
"UserId", userId);
}
if (UserTempId != null) {
// 设置到通过模板new的新的请求中
requestTemplate.header(
"UserTempId", UserTempId);
}
}
}
Feign远程调用丢失请求头问题的更多相关文章
- Feign远程调用 (介绍与使用)
Feign远程调用 Feign是代替RestTemplate进行远程调用的组件,避免了RestTemplate手写复杂的url容易出错的问题,并提高代码的可读性 使用Feign步骤 1)引入依赖 哪个 ...
- SpringCloud(二) - Eureka注册中心,feign远程调用,hystrix降级和熔断
1.项目模块介绍 2. 父项目 主要依赖 spring-cloud 的 版本控制 <properties> <!-- springCloud 版本 --> <scd.ve ...
- Feign远程调用
有关微服务中,服务与服务如何通信,我已经给大家介绍了Ribbon远程调用的相关知识,不知道大家有没有发现Ribbon的问题呢? Ribbon的问题 在Ribbon中,如果我们想要发起一个调用,是这样的 ...
- 使用Java的URL/HttpURLConnection进行远程调用(POST请求)
利用Java的HttpURLConnection进行远程url请求(调用远程接口) 测试类:请求类型为json,以post方式请求,利用OutputStream写入数据 实体类: public cla ...
- springcloud系列五 feign远程调用服务
一:Feign简介 Feign 是一种声明式.模板化的 HTTP 客户端,在 Spring Cloud 中使用 Feign,可以做到使用 HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完 ...
- 【SpringCloud】(二)Eureka注册中心和Feign远程调用
1 SpringCloud 核心 SpringCloud基于HTTP协议,这是和Dubbo最本质的区别,Dubbo的核心是RPC(远程方法调用) Eureka:注册中心 Ribbon:客户端负载均衡 ...
- feign远程调用出错
如果你传递的参数,比较复杂时,默认会采用POST的请求方式. 传递单个参数时,推荐使用@PathVariable,如果传递的单个参数比较多,这里也可以采用@RequestParam,Feign接口中不 ...
- RestTemplate远程调用POST请求:HTTP 415 Unsupported Media Type
这是本项目的接口 称为client @POST @Path("/{urlcode}") @Consumes(MediaTypes.JSON_UTF_8) @Produces(Med ...
- feign远程调用接口报空指针
今天对feign接口进行转移的时候再次启动一直报空指针,找了好久试了好多次才发现是没有对feign接口加注解 请一定要记得加自动注入的注解啊啊啊啊啊啊!!!!!!!
- Feign远程调用源码阅读
随机推荐
- Linux 内核音频数据传递主要流程 (下)
来而不往非礼也.前面看到了用户空间应用程序和 DMA buffer 之间交换数据,并更新 runtime->control->appl_ptr 指针的过程,这里看一下硬件设备驱动程序在完成 ...
- 2023-09-01:用go语言编写。给出两个长度均为n的数组, A = { a1, a2, ... ,an }, B = { b1, b2, ... ,bn }。 你需要求出其有多少个区间[L,R]
2023-09-01:用go语言编写.给出两个长度均为n的数组, A = { a1, a2, ... ,an }, B = { b1, b2, ... ,bn }. 你需要求出其有多少个区间[L,R] ...
- 《Python魔法大冒险》009 魔法之语:字符串的奥秘
随着小鱼和魔法师的深入,他们来到了一个被薄雾笼罩的湖泊.湖中央有一个小岛,岛上有一棵巨大的古树,树上挂满了闪闪发光的果实,每一个果实上都刻着一个字母或符号. 小鱼好奇地问:"这些是什么果实? ...
- 「codeforces - 542D」Superhero's Job
link. 容易发现,如果将 \(x\) 写作 \(\displaystyle \prod_{i = 1}^k p_i^{\alpha_i}\) 的形式,\(\displaystyle J(x) = ...
- 「coci 2021-2022 #1」Logičari
link. 断环后把断的边所连的两个点特殊标记,作为两个特殊点.这样就是一个树,树的做法很简单吧,把两个特殊点特殊处理带进状态即可. 具体一点就是,设 \(f(x,c_x,c_f,c_{rt_1},c ...
- 探索Lighthouse性能分数计算背后的奥秘
作为开发我们都知道,页面性能很重要,一个性能良好的页面可以给用户带来非常好的用户体验.那么,怎么能知道自己写的页面性能是好是坏呢? Lighthouse 是Chrome提供给开发者用来测量页面性能的工 ...
- 实战指南,SpringBoot + Mybatis 如何对接多数据源
本文分享自华为云社区 <实战指南,SpringBoot + Mybatis 如何对接多数据源>,作者:战斧. 在我们开发一些具有综合功能的项目时,往往会碰到一种情况,需要同时连接多个数据库 ...
- 11G RAC 11.2.0.1.0实例evict故障处理
Aix 7.1 参考文档: https://blogs.oracle.com/database4cn/rac Resolving ORA-481 and "terminating the i ...
- 原创基于Scrum框架产研团队运作20问
学习完了 Scrum,实际使用中,是否遇到/思考过下面的问题? Product Owner的老板是谁.谁来给 Product Owner打绩效.考核的标准是啥? Scrum Master 的老板是谁. ...
- C/C++中的ACM题目输入处理——简单易上手
这里就不按其他文章的以各种情况为分类方法,而是以方法本身为分类办法.因为有一些方法是不同情况通用的,比如已知数量数字的输入和未知数量数字的输入,其实可以用同一种办法. 输入 C/C++ :scanf正 ...