spring-boot - 如何为特定客户端设置自定义 Feign RequestInterceptor?
问题描述
我需要向一些新的 feign 客户端添加自定义 Authorization 标头。所以我写了一个 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())
}
}
}
解决方案
我找到了解决方案。对于每个 FeignClient 都有一个configuration
接受类数组的选项。在 kotlin 中将类分配给配置的语法如下:
@FeignClient(
name = "feign-client",
path = "/path",
url = "https://example.com",
configuration = [FeignCustomConfiguration::class]
)
interface FeignCustomClient {
...
}
通过这个分配,每个 FeignClient 都有自己的配置,并且 RequestInterceptor 不处理其他客户端。
推荐阅读
- c++ - 我找不到调整神经网络的正确方法
- datepicker - 日期选择器:任何一天的选择
- go - Closures in Golang - String not displayed
- java - 限制打开的最大文件大小
- python-3.x - uWSGI +nginx 设置 - Dash (Plotly) 部署
- javascript - 如何使用 opencv_contrib 构建自定义 opencv.js
- javascript - Highcharts: Drilldown from map to chart
- jmeter - JMeter:响应数据与预期不同
- c++ - Template metaprogram to find similar consecutive typenames
- c# - 如何根据来源过滤 QnAMaker 问题