Как определить глобальный статический заголовок в Spring Boot Feign Client - PullRequest
0 голосов
/ 22 мая 2018

У меня есть приложение весенней загрузки, и я хочу создать клиент Feign, который имеет статически определенное значение заголовка (для аутентификации, но не для базовой аутентификации).Я нашел аннотацию @Headers, но она не работает в Spring Boot.Я подозреваю, что это как-то связано с использованием SpringMvcContract.

Вот код, который я хочу работать:

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

Но он не добавляет заголовки.

Я сделал чистое весеннее загрузочное приложение с моими попытками и разместил здесь github: пример github

Единственный способ заставить его работать - это определить RequestInterceptorкак глобальный компонент, но я не хочу этого делать, потому что это повлияет на других клиентов.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Этого также можно добиться, добавив заголовок к отдельным методам следующим образом:

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

Использование @Headers с динамическими значениями в клиенте Feign + Spring Cloud (Brixton RC2) обсуждаетрешение для динамических значений с использованием @RequestHeader.

0 голосов
/ 22 мая 2018

Вы можете установить определенный класс конфигурации в своем интерфейсе feign и определить в нем bean-компонент RequestInterceptor.Например:

@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
      }
    };
  }
}
...