Spring-Boot HTTP 的 Feign Map<String, String> Headers

Spring-Boot Feign Map<String, String> of HTTP Headers

我试图让 Feign 客户端在下游调用的方法签名为 (@RequestBody someObject, @RequestHeaders Map<String, String> headers) 的地方工作。但我无法找到任何可行的解决方案。尝试了 @HeaderMap 注释,但 Feign 忽略了它并告诉我方法中的 RequestBody 参数太多。 @RequestHeader 只允许设置一个声明性的 header 。我不确定 RequestInterceptor 能否正常工作,因为我需要从上一个请求传递的这些 headers。我觉得 Sleuth 已经以某种方式做到了这一点 - 所以我认为这是可能的。

所以我没有找到很好的解决方案,但我想出的解决方案是使用 Feign RequestInterceptor 将 headers 添加到存储在 ThreadLocal 中的请求中在调用 FeignClient 实现之前设置。不是最优雅的,如果我们离开每个请求类型范例 1 个线程,将无法工作,但我现在能想到的就是这些。