Feign Client Динамический заголовок авторизации - PullRequest
0 голосов
/ 03 мая 2018

У меня есть служба, которая получает http-запрос с заголовком авторизации. При обработке запроса я хочу использовать Feign Client для запроса другого сервиса. Запрос к другой службе должен включать другой заголовок авторизации.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Если вы используете Feign клиента напрямую без пружины

тогда вы можете передать параметры заголовка примерно так в Feign Interface

@Headers("Content-Type: application/json")
@RequestLine("PATCH infusionsoft/contacts/{contactId}?format={format}")
InfusionsoftFullContact updateContact(@Param("contactId") Long contactId, @Param("format") String format,InfusionsoftFullContact contact,@HeaderMap Map<String, Object> headerMap);

Где HeaderParams может быть как ниже

Map<String, Object> headerMap = new HashMap<>();

   headerMap.put("application", "FDX");
   headerMap.put("Authorization", "Basic aW5mdXNpb25zb2Z0OnBhc3N3b3Jk");
   headerMap.put("platform",user.getPlatform());
   headerMap.put("platformKey", user.getPlatformKey());
   headerMap.put("email",user.getEmail());
   headerMap.put("Content-Type", MediaType.APPLICATION_JSON);
0 голосов
/ 04 мая 2018

Вы просто передаете свой заголовок в качестве аргумента и соответственно объявляете свой метод в своем интерфейсе. Пожалуйста, найдите фрагмент кода ниже.

И когда вы запустите свой клиент Feign с полным уровнем ведения журнала (feign.client.config.default.loggerLevel = full), вы увидите заголовок авторизации (в моем случае это токен доступа OAuth Bearer).

Надеюсь, это поможет.

Всего наилучшего, Wim

@FeignClient(name="mde", url="${MDE.campaignServiceEndpoint}")
public interface CampaignClientService {
    @RequestMapping(method = RequestMethod.GET, value = "/useCases/search/findByName?name={name}")
    @Cacheable("placementUseCase")
    PlacementUseCase findUseCaseByName(@RequestHeader(value = "Authorization", required = true) String authorizationHeader, @PathVariable("name") String name);
...