我有一个用例,我需要将所有以特定前缀开头的标头传递给伪装客户端。我不知道这些标头的数量或确切名称。似乎没有一种方法可以轻松完成此操作,因为Feign客户端希望使用来指定所有标头@RequestHeader("name")
。它似乎不支持@RequestHeader HttpHeaders
,这将非常有用。有什么建议么?
在撰写本文时,Feign不支持使用Map的动态标头或查询参数。Spring Cloud Feign客户端依赖于Spring批注而不是Feign批注,并且的实现AnnotatedParameterProcessor
存在一个错误,使得它们不执行文档说明的应做的工作。
如果方法参数是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] 删除。
我来说两句