要在多个微服务之间传递信息时,有时需要在请求头上添加一些信息,可以使用RequestInterceptor。其中的apply方法会在请求发送前执行。

全局拦截器


import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.stereotype.Component;
 
@Component // 声明为 Spring Bean 即开启全局生效
public class MyFeignInterceptor implements RequestInterceptor {
 
    @Override
    public void apply(RequestTemplate template) {
        // 添加请求头
        template.header("X-My-Header", "MyHeaderValue");
        // 添加参数
        template.query("source", "feign-client");
    }
}

局部拦截器


import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.stereotype.Component;
 
public class MyFeignInterceptor implements RequestInterceptor {
 
    @Override
    public void apply(RequestTemplate template) {
		
    }
}
 
public class MyFeignConfig {
    @Bean
    public RequestInterceptor requestInterceptor() {
        return new MyFeignInterceptor();
    }
}
 
@FeignClient(name = "my-service", configuration = MyFeignConfig.class)
public interface MyClient {
    // ...
}