Как установить собственный Feign RequestInterceptor для конкретных клиентов? - PullRequest
1 голос
/ 02 июля 2019

Мне нужно добавить пользовательский заголовок авторизации для некоторых новых симулированных клиентов.Поэтому я пишу RequestInterceptor, и он работает, но дело в том, что я не хочу, чтобы этот пользовательский RequestInterceptor влиял на моих старых клиентов.Я попытался отфильтровать, используя метод template.url (), но он не дает мне полный URL-адрес запроса, а содержит только URL-адрес клиентского метода (не URL-адрес и путь, объявленные выше класса клиента).Мой вопрос заключается в том, как я могу нацелить перехватчик?

Это моя конфигурация:

@Configuration
open class FeignCustomConfiguration {

    private fun generateToken(): String { ... }

    @Bean
    open fun requestInterceptor(): RequestInterceptor {
        return RequestInterceptor {
            it.header("Authorization", generateToken())
        }
    }
}

1 Ответ

2 голосов
/ 07 июля 2019

Я нашел решение. Для каждого FeignClient есть опция configuration, которая принимает массив классов. Синтаксис назначения класса для настройки в kotlin следующий:

@FeignClient(
        name = "feign-client",
        path = "/path",
        url = "https://example.com",
        configuration = [FeignCustomConfiguration::class]
)
interface FeignCustomClient {
     ...
}

С этим назначением каждый FeignClient имеет свою собственную конфигурацию, а RequestInterceptor не работает с другими клиентами.

...