如何在不知道所有名称的情况下将任意数量的标头传递给Feign客户端?

阿比吉特·萨卡(Abhijit sarkar)

我有一个用例,我需要将所有以特定前缀开头的标头传递给伪装客户端。我不知道这些标头的数量或确切名称。似乎没有一种方法可以轻松完成此操作,因为Feign客户端希望使用来指定所有标头@RequestHeader("name")它似乎不支持@RequestHeader HttpHeaders,这将非常有用。有什么建议么?

阿比吉特·萨卡(Abhijit sarkar)

在撰写本文时,Feign不支持使用Map的动态标头或查询参数。Spring Cloud Feign客户端依赖于Spring批注而不是Feign批注,并且的实现AnnotatedParameterProcessor存在一个错误,使得它们不执行文档说明的应做的工作。

RequestHeader文件:

如果方法参数是Map,MultiValueMap或HttpHeaders,则将使用所有标头名称和值填充映射。

RequestParam文件:

如果方法参数是Map或MultiValueMap,并且未指定参数名称,则将使用所有请求参数名称和值填充map参数。

我提交了一个拉取请求,可以解决此问题。在此之前,我使用的扩展SpringMvcContract是使用自己的AnnotatedParameterProcessor实现。我设置自定义SpringMvcContract使用Feign.Builder如下:

@Autowired
FormattingConversionService feignConversionService;

@Bean
@Scope(SCOPE_PROTOTYPE)
public Feign.Builder feignBuilder() {
    return HystrixFeign.builder()
            .contract(feignContract());
}

@Bean
public Contract feignContract() {
    return new EnhancedSpringMvcContract(feignConversionService);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

(JavaFX)如何在不知道控制器名称的情况下将类的实例传递给FXML控制器?

Delphi-JSON对象-如何在不知道属性名称的情况下迭代所有属性?

如何在不知道类型的情况下将表的所有子项返回到列表?

如何在不知道它们的编号的情况下动态获取所有元素

如何在不知道元素的情况下循环所有XML属性

如何在不知道大小的情况下绘制matlab中的所有矩阵元素?

ssis在不知道现有名称的情况下重命名文件

如何在不知道其名称的情况下包括Protobuf内置的任意文件集?

C++ 在不知道其类型的情况下将数组传递给函数

如何在没有任何JQuery Lib的情况下知道实际的客户端高度?

如何在不进行for循环的情况下将任意数量的参数传递给R函数?

如何在不知道密钥名称的情况下获取密钥名称

如何在不知道请求数量的情况下链接 Javascript ajax 请求。(节点)

在不知道其名称的情况下打印所有POST请求参数

Selenium:如何在不知道其id或name属性的情况下找到网页上的所有图像?

如何在不知道变量名称的情况下读取查询字符串?

如何在不知道列表名称的情况下使用 zip

如何在不知道对象名称的情况下返回Json objects子对象?

如何在不知道其名称的情况下删除SQL默认约束?

如何在不知道子类名称的情况下访问django中对象的子类?

如何在不知道索引值名称的情况下打印数组的值

如何在不知道组件名称的情况下访问组件的属性?

如何在不知道对象名称的情况下访问对象

如何在不知道主题名称的情况下卸载主题?

如何在不知道名称的情况下访问结构成员?

如何在不知道名称的情况下从终端运行应用程序?

如何在不提供服务的情况下测试Feign REST客户端?

如何在不知道格式的情况下将String转换为Date?

如何将动态标头值传递给 Micronaut 声明式 HTTP 客户端?