如何为特定客户端设置自定义Feign RequestInterceptor?

时间:2019-07-02 07:09:20

标签: spring-boot kotlin feign

我需要向一些新的伪装客户端添加自定义授权标头。因此,我编写了一个RequestInterceptor并成功了,但要点是我不希望此自定义RequestInterceptor影响我的旧客户端。我尝试使用template.url()方法进行过滤,但它没有提供请求的完整网址,而仅包含客户端方法的网址(不包含在客户端类上方宣布的网址和路径)。 我的问题是,我该如何瞄准拦截器?

这是我的配置:

@Configuration
open class FeignCustomConfiguration {

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

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

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。 对于每个FeignClient,都有一个configuration选项,它接受一系列的类。在kotlin中为配置分配类的语法如下:

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

使用此分配,每个FeignClient都有其自己的配置,RequestInterceptor不会处理其他客户端。