spring cloud fegin传递request header

xiaoxiao2021-03-01  3

1、概述

今天一个朋友, 遇到一个如何在使用spring cloud feign 传递token 等参数问题。

2、解决方案

2.1 创建类继承RequestInterceptor

创建类继承RequestInterceptor 具体如下代码所示:

public class FeginInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { Map<String,String> headers = getHeaders(); for(String headerName : headers.keySet()){ requestTemplate.header(headerName, getHeaders().get(headerName)); } /** * 返回所有header 中的数据 * Return */ private Map<String, String> getHeaders() { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); Map<String, String> map = new LinkedHashMap<>(); Enumeration<String> enumeration = request.getHeaderNames(); while (enumeration.hasMoreElements()) { String key = enumeration.nextElement(); String value = request.getHeader(key); map.put(key, value); } return map; } }

2.2 在@configuration 类中定义其

@Configuration public class FeginSupportHeader { @Bean public RequestInterceptor getRequestInterceptor(){ return new FeginInterceptor(); } }

2.3 在yml 或者properties 中添加下面关键配置

# To set thread isolation to SEMAPHORE hystrix: command: default: execution: isolation: strategy: SEMAPHORE

3、总结

按照上面的操作就可以将上一个服务或者是前端传递过来的header参数传递到下一个服务中去。 需要注意的是, 每个请求都会拦截设置上header信息。

4. 参考地址

http://cloud.spring.io/spring-cloud-openfeign/single/spring-cloud-openfeign.html

转载请注明原文地址: https://www.6miu.com/read-3850167.html

最新回复(0)