要在多个微服务之间传递信息时,有时需要在请求头上添加一些信息,可以使用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 {
// ...
}