我需要将自定义授权 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不会与其他客户端打交道。