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

这是我的配置:

@Configuration
open class FeignCustomConfiguration {

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

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

最佳答案

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

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

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

10-08 13:48