如何使用Feign客户端设置请求标头?

Abh*_*kar 4 spring-mvc microservices spring-cloud netflix-feign spring-cloud-netflix

我们正在使用Spring Cloud框架开发一套微服务,我们需要做的一件事就是设置请求头.我知道我可以将参数@RequestHeader传递给Feign方法,但该值需要来自另一个bean.我不知道SPEL是否可用于Feign参数值.我认为这对于大多数客户来说是一个很常见的用例,所以会有一些例子,但到目前为止我还没有找到任何例子.当然,我可以深入了解Spring课程代码并尝试覆盖默认的Feign配置,但如果我要编写大量代码来实现这一点,它有点会破坏声明性客户端的目的.有什么想法吗?

Rob*_*obP 5

我在使用RequestInterceptor之前完成了这个操作,如下所示:

@Component
public class MyRequestInterceptor implements RequestInterceptor {
  @Override
  public void apply(RequestTemplate template) {
    template.headers(getHeadersFromWherever());
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到更多有用的信息:

https://github.com/Netflix/feign#user-content-setting-headers-per-target

  • 如果将它包含在`@ ComponentScan`中,拦截器将应用于所有Feign客户端.另一方面,如果在`FooConfiguration.class`中定义,它将仅应用于特定的FeignClient. (3认同)