今天一个朋友, 遇到一个如何在使用spring cloud feign 传递token 等参数问题。
创建类继承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.3 在yml 或者properties 中添加下面关键配置
# To set thread isolation to SEMAPHORE hystrix: command: default: execution: isolation: strategy: SEMAPHORE按照上面的操作就可以将上一个服务或者是前端传递过来的header参数传递到下一个服务中去。 需要注意的是, 每个请求都会拦截设置上header信息。
http://cloud.spring.io/spring-cloud-openfeign/single/spring-cloud-openfeign.html