SpringCloud-OpenFeign

openFeign向下传递请求头

OpenFeign在微服务间的调用向下传递请求头

思路:把请求头放在ThreadLocal里,feign调用时,把请求头取出来再传递给下个服务

方案:实现RequestInterceptor接口,该接口的作用是在feign调用时,给请求添加头信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Component
public class FeignRequestInterceptor implements RequestInterceptor {

@Override
public void apply(RequestTemplate template) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames == null) {
return;
}
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
String values = request.getHeader(name);
template.header(name, values);
}
}
}
  • 从RequestContextHolder获取请求参数,内部就是通过ThreadLocal实现的

代码地址

https://gitee.com/aacopy/gateway-test.git