Spring Cloud之Feign 转发请求头(header参数)

在做接口请求时,我们经常会在header头中增加一些鉴权信息,如token 或 jwt,那么在通过fegin从A server去调用B server的接口时,如果B server的接口需要header信息,我们需要将A sever获取的header转发到B上。

解决方式

我们需要实现Feign提供的一个接口RequestInterceptor

1@Configuration 2public class FeignConfiguration implements RequestInterceptor{ 3 private final Logger logger = LoggerFactory.getLogger(getClass()); 4 5 @Override 6 public void apply(RequestTemplate template) { 7 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder 8 .getRequestAttributes(); 9 HttpServletRequest request = attributes.getRequest(); 10 Enumeration<String> headerNames = request.getHeaderNames(); 11 if (headerNames != null) { 12 while (headerNames.hasMoreElements()) { 13 String name = headerNames.nextElement(); 14 String values = request.getHeader(name); 15 template.header(name, values); 16 17 } 18 logger.info("feign interceptor header:{}",template); 19 } 20 /* Enumeration<String> bodyNames = request.getParameterNames(); 21 StringBuffer body =new StringBuffer(); 22 if (bodyNames != null) { 23 while (bodyNames.hasMoreElements()) { 24 String name = bodyNames.nextElement(); 25 String values = request.getParameter(name); 26 body.append(name).append("=").append(values).append("&"); 27 } 28 } 29 if(body.length()!=0) { 30 body.deleteCharAt(body.length()-1); 31 template.body(body.toString()); 32 //logger.info("feign interceptor body:{}",body.toString()); 33 }*/ 34 } 35 }

@FeignClient注解里面的属性加上configuration = FeignConfiguration.class就可以了。如

1@FeignClient(name = "a-server", configuration = FeignConfiguration.class) 2public interface AServer{ 3}

bootstrap.yml增加

1hystrix: 2 command: 3 default: 4 execution: 5 timeout: 6 enabled: false 7 isolation: 8 strategy: SEMAPHORE
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )