Controller接收到请求后,我们可以在service中通过feign直接调用其它服务的接口,但是,controller接收到的请求和通过feign调用其它服务,其它服务接收到的请求,是不一样的。例如我们往往习惯于在header中放入用户的token信息,在不做处理的情况下,其它服务接收到的请求,可能就是无用户信息状态,这种请求应该判定为无效状态。

在服务的提供方或者调用方定义一个拦截器,将当前请求的token信息手动添加到feign请求的header中。

@Configuration
public class FeignRequestInterceptorConfig implements RequestInterceptor {@Beanpublic RequestContextListener requestContextListener() {return new RequestContextListener();}@Overridepublic void apply(RequestTemplate requestTemplate) {ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();if (ObjectUtils.isEmpty(attributes)) {return;}HttpServletRequest request = attributes.getRequest();String token = request.getHeader("token");requestTemplate.header("token", token);}
}

在使用过程中,可能会涉及到在请求方获取自己的token信息都是为空的,查看一下是否是Hystrix策略导致的,如下配置可以解决该问题。

hystrix:command:default:execution:timeout:#如果enabled设置为false,则请求超时交给ribbon控制enabled: trueisolation:# 隔离策略strategy: SEMAPHOREthread:timeoutInMilliseconds: 100000

调用feign接口时,如何往header中添加参数相关推荐

  1. 华为云调用feign接口时出现java.io.IOException: too many bytes written

    最近在开发项目时遇到使用springcloud调用feign接口时没问题,但是在使用华为云时调用feign接口出现java.io.IOException: too many bytes written ...

  2. postman登录获取token,接口header中添加token发送请求

    [Postman]登录获取token,接口header中添加token发送请求 说明 开始 说明 该文章只是用于记录,防止自己忘记. 开始 1.准备登录接口 2.添加全局变量 3.添加一个登录接口,登 ...

  3. .Net 4.0使用httpClient调用WebApi接口时提示“由于远程方已关闭传输流,身份验证失败。”

    .Net 4.0使用httpClient调用WebApi接口时提示"由于远程方已关闭传输流,身份验证失败." 参考https://blog.csdn.net/qiaohuyue/a ...

  4. 在header中添加中文头信息

    默认情况下,在http头信息中不能存放中文,如果需要在header中添加中文头信息,需要进行编码处理. 发送方: String data = URLEncoder.encode("中文&qu ...

  5. matlab 将图形另存时,在文件名字符串中添加参数,总是保存出错,无效文件名

    将图形另存时,在文件名字符串中添加参数,总是保存出错,解决方式如下: 注意:我尝试过 string(1) char(1) 等都不可以,提示无效文件名. filename = ['Point cloud ...

  6. Django从理论到实战(part8)--URL中添加参数

    学习笔记,仅供参考 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写 ...

  7. 调用Feign接口报错:HttpMessageNotReadableException:JSON parse error:Illegal character ((CTRL-CHAR, code 31)

    背景 在一个定时任务中,每隔一个小时会调用远程接口进行数据同步.本着"先实现,再优化"的原则,刚开始实现方式是在循环里每次调用远程接口,传入单条记录,因为每次都需要完成建立连接.数 ...

  8. go语言如何调用java接口,[译] 如何在 Go 中使用接口

    在开始使用 Go 编程之前,我的大部分工作都是用 Python 完成的.作为一名 Python 程序员,我发现学习使用 Go 中的接口是非常困难的.基础很简单,而且我知道如何在标准库中使用接口,但是我 ...

  9. .net调用c++方法时如何释放c++中分配的内存_C/C++常见面试题总结

    第一部分:计算机基础 1. C/C++内存有哪几种类型? C中,内存分为5个区:堆(malloc).栈(如局部变量.函数参数).程序代码区(存放二进制代码).全局/静态存储区(全局变量.static变 ...

最新文章

  1. java项目测试支付异步通知接口
  2. 如何在30前成为“富翁”?
  3. 期末复习、化学反应工程科目(第五章)
  4. jquery 学习之二 属性---文本 值
  5. 用JQUERY为INPUT的TXT类型赋值及取值操作
  6. 荣耀20s真机谍照曝光:开孔全面屏+后置竖排三摄
  7. 三行代码实现冒泡排序算法
  8. Migrate blog from blogcn here
  9. opengl (1) 基本API的熟悉
  10. ubuntu上安装 ibus Google拼音输入法解决中文输入问题
  11. linux iscsi 发起程序,怎么查看进程的发起程序,iscsi发起程序是什么
  12. 台式计算机无法开机原因,电脑三五个月不开机,无法点亮屏幕怎么办?
  13. 62-Mybatis高级介绍
  14. Java实现经典版坦克大战(还原度很高)
  15. 用计算机画函数图象的软件,信息技术应用 用计算机画函数图象优秀教案
  16. Science: 重新“野化“ 植物微生物组
  17. 短跑运动员求一个记时小程序
  18. 互联网数据标注员是做什么的?有什么发展前途吗?
  19. Android使用Vitamio来打造自己的视频播放器
  20. 单例模式——C++版

热门文章

  1. 配置nginx 解决404 not found问题
  2. Vuejs 使用 lib 库模式打包 umd 解决 NPM 包发布的问题
  3. 为什么在Android上的某些设备上使用相机意图捕获的图像会被旋转?
  4. CubeMX创建stm32项目及遇到的问题
  5. Solr中的数据导入
  6. Android:Android SDK的下载与安装
  7. 全向轮机器人直线运动分析
  8. ifpc币_劳力士手表价格表一览表
  9. iphone小圆点在哪儿设置_字节推大力教育新品牌;iPhone12跌破发行价;直播打赏将设置冷静期;蚂蚁A股网上申购开启 | Tech日报...
  10. 奇异值分解(SVD)原理