Мы разрабатываем набор микросервисов с использованием инфраструктуры Spring Cloud, и одна из вещей, которые нам нужно сделать, - это установить заголовки запросов. Я знаю, что могу передать параметр @RequestHeader
методу Feign, но значение должно поступать от другого bean-компонента. Я не знаю, можно ли использовать SPEL для значения параметра Feign. Я думал, что это достаточно распространенный вариант использования для большинства клиентов, поэтому будет несколько примеров, но пока я не нашел ни одного. Конечно, я могу покопаться в коде курса Spring и попытаться переопределить конфигурацию Feign по умолчанию, но это как бы сводит на нет цель декларативного клиента, если мне нужно написать много кода для этого. Есть предположения?
Как установить заголовки запросов с помощью фальшивого клиента?
Ответы (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
Куда вы это положили? Spring Cloud doc заявляет, что есть
FeignClientsConfiguration
и FooConfiguration
: @FeignClient(name = "stores", configuration = FooConfiguration.class)
public interface StoreClient {...}
- person Abhijit Sarkar; 20.05.2016
Вы можете поместить это в любое место, которое включено в ваш @ComponentScan.
- person RobP; 20.05.2016
Если вы включите его в
@ComponentScan
, перехватчик будет применен ко всем клиентам Feign. С другой стороны, если он определен в FooConfiguration.class
, он будет применяться только к определенному FeignClient.
- person Aleksandr Erokhin; 28.03.2017