Симулируйте динамические c заголовки поверх предопределенных заголовков - PullRequest
0 голосов
/ 03 мая 2020

Я хочу создать клиента Feign, который всегда использует один и тот же набор заголовков, но мне также нужно добавить динамический c accessToken заголовок поверх предопределенных.

То, что у меня сейчас есть, таково.

interface ApiClient {

    @RequestLine("GET /accounts")
    fun fetchAccounts(
        @HeaderMap headerMap: Map<String, Any>
    ): AccountsResponse
}

Это означает, что я должен всегда передавать все заголовки. Я делаю это так.

private fun createHeaderMap(accessToken: String) =
    mapOf(
        "Authorization" to "Bearer $accessToken",
        "Cache-Control" to "no-cache",
        "Content-Type" to MediaTypes.APPLICATION_JSON
    )

Таким образом, звонок клиенту выглядит следующим образом.

apiClient.fetchAccounts(
     headerMap = createHeaderMap(accessToken)
)

Вместо этого я хотел бы, чтобы only pass один изменяемый аргумент, accessToken, и остальные из них должны быть как-то уже предопределены. Вопрос в том, КАК?

Итак, желаемый клиентский вызов будет.

apiClient.fetchAccounts(accessToken)

Таким образом, я могу динамически передавать accessToken, но у меня все еще есть другие заголовки stati c включены в вызов. Как мне это сделать с Feign?

1 Ответ

0 голосов
/ 03 мая 2020

В этом случае можно использовать Перехватчики Feign запроса .

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

static class ForwardedForInterceptor implements RequestInterceptor {
  @Override public void apply(RequestTemplate template) {
    template.header("X-Forwarded-For", "origin.host.com");
  }
}
...