如何在Spring Boot Feign Client上定义全局静态头

时间:2018-05-21 22:28:01

标签: spring-boot feign

我有一个Spring启动应用程序,并且想要创建一个具有静态定义标头值的Feign客户端(用于auth,但不是基本身份验证)。我找到了@Headers注释,但它似乎并不适用于Spring Boot领域。我怀疑这与使用SpringMvcContract

有关

这是我想要的代码:

@FeignClient(name = "foo", url = "http://localhost:4444/feign")
@Headers({"myHeader:value"})
public interface LocalhostClient {

但它没有添加标题。

我用我的尝试制作了一个干净的春季启动应用程序并发布到github:github example

我能够使其工作的唯一方法是将RequestInterceptor定义为全局bean,但我不想这样做,因为它会影响其他客户端。

2 个答案:

答案 0 :(得分:4)

您还可以通过向各个方法添加标题来实现此目的:

@RequestMapping(method = RequestMethod.GET, path = "/resource", headers = {"myHeader=value"})

Using @Headers with dynamic values in Feign client + Spring Cloud (Brixton RC2)使用@RequestHeader讨论了动态值的解决方案。

答案 1 :(得分:2)

您可以在feign界面上设置特定的配置类,并在其中定义RequestInterceptor bean。例如:

@FeignClient(name = "foo", url = "http://localhost:4444/feign", 
configuration = FeignConfiguration.class)
public interface LocalhostClient {
}

@Configuration
public class FeignConfiguration {

  @Bean
  public RequestInterceptor requestTokenBearerInterceptor() {
    return new RequestInterceptor() {
      @Override
      public void apply(RequestTemplate requestTemplate) {
        // Do what you want to do
      }
    };
  }
}