Feign的RequestInterceptor

王守钰 2020-12-08 18:12:40

RequestInterceptor

RequestInterceptor为Feign的拦截器,整体的请求都会经过这个拦截器来进行处理。比如说我们在做分布式项目调度的时候可以自定义RequestInterceptor来实现头传递等处理。当然了RequestInterceptor也是一个接口。

public interface RequestInterceptor {
  // 处理
  void apply(RequestTemplate template);
}

真整去调用拦截器的方法在SynchronousMethodHandlerexecuteAndDecode方法,来调用targetRequest

// 构建请求信息
Request targetRequest(RequestTemplate template) {
    // 循环设置拦截器
    for (RequestInterceptor interceptor : requestInterceptors) {
      interceptor.apply(template);
    }
    // 获取真正的Request对象
    // 如果直接使用feign-core 默认使用的也就是之前所说的HardCodedTarget硬编码的target
    return target.apply(template);
}