2

我目前在做什么(这是非常简单方便的方式):

Feign.builder()
.client(RibbonClient.create())
...
.requestInterceptor(new MyInterceptor())

但拦截发生在功能区实际解析目标主机之前。问题是,我要添加的一个标头必须基于目标主机的名称来创建。

无论如何我可以在主机解决后操纵标头?

4

1 回答 1

1

我找到了解决此问题的以下解决方案。我没有使用 Feign 拦截器,而是使用 RibbonClient 委托:

Feign.builder()
.client(RibbonClient.builder().delegate(new MyDelegate())
...

MyDelegate扩展feign.Client.Default类并覆盖public Response execute(Request request, Request.Options options)方法。

这样我就可以通过URI.create(request.url()).getHost().

然后我创建新请求,添加我的标题并super.execute(newRequest, options)作为最后一条指令运行。

于 2017-09-12T15:32:44.953 回答