Как установить заголовки запросов с помощью фальшивого клиента?

Мы разрабатываем набор микросервисов с использованием инфраструктуры Spring Cloud, и одна из вещей, которые нам нужно сделать, - это установить заголовки запросов. Я знаю, что могу передать параметр @RequestHeader методу Feign, но значение должно поступать от другого bean-компонента. Я не знаю, можно ли использовать SPEL для значения параметра Feign. Я думал, что это достаточно распространенный вариант использования для большинства клиентов, поэтому будет несколько примеров, но пока я не нашел ни одного. Конечно, я могу покопаться в коде курса Spring и попытаться переопределить конфигурацию Feign по умолчанию, но это как бы сводит на нет цель декларативного клиента, если мне нужно написать много кода для этого. Есть предположения?


person Abhijit Sarkar    schedule 18.05.2016    source источник


Ответы (1)


Я сделал это перед использованием RequestInterceptor следующим образом:

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

Вы можете найти дополнительную полезную информацию здесь:

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

person RobP    schedule 19.05.2016
comment
Куда вы это положили? Spring Cloud doc заявляет, что есть FeignClientsConfiguration и FooConfiguration: @FeignClient(name = "stores", configuration = FooConfiguration.class) public interface StoreClient {...} - person Abhijit Sarkar; 20.05.2016
comment
Вы можете поместить это в любое место, которое включено в ваш @ComponentScan. - person RobP; 20.05.2016
comment
Если вы включите его в @ComponentScan, перехватчик будет применен ко всем клиентам Feign. С другой стороны, если он определен в FooConfiguration.class, он будет применяться только к определенному FeignClient. - person Aleksandr Erokhin; 28.03.2017