【问题标题】:Feign + Ribbon request interception AFTER target host is choosenFeign + Ribbon 请求拦截 AFTER 选择目标主机
【发布时间】:2017-08-30 13:47:32
【问题描述】:

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

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

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

在主机解析后我是否可以操作标头?

【问题讨论】:

    标签: netflix-feign netflix-ribbon


    【解决方案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) 作为最后一条指令。

    【讨论】:

      猜你喜欢
      • 2018-02-02
      • 2021-07-03
      • 2017-03-08
      • 1970-01-01
      • 2021-03-15
      • 2015-10-21
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多