【问题标题】:Zuul filter return valueZuul过滤器返回值
【发布时间】:2017-12-15 15:05:13
【问题描述】:

ZuulFilter.run()返回值的可能用法是什么?
所有示例(例如Spring example)都返回null
官方文档says

可能会返回一些任意的工件。当前的实现忽略它。

那么为什么要拥有它呢?

【问题讨论】:

    标签: java spring spring-boot netflix-zuul


    【解决方案1】:

    我在多个项目中使用过这个库,但我从未想过要研究并偶然发现这个问题,所以我不得不去看看。只是在 IntelliJ 中跟踪代码,结果看起来确实毫无意义。

    我在zuul-core:1.3.1:

    查看FilterProcessor,当调用路由方法根据类型进行路由时,它们都调用runFilters(sType),最终得到实现IZuulFilter类的有问题的返回对象。这条路似乎到此为止了。

    然后我停下来查看他们的测试类,似乎对返回对象和包装它的 ZuulFilterResult 没有任何作用。

    然后我想,好吧,也许有一种方法可以将数据从一个 IZuulFilter 传递到另一个(例如从 pre 到 route),但这似乎也不可能,因为 FilterProcessor.processZuulFilter(ZuulFilter) 没有做任何事情结果并将其传递回runFilters(sType),我们知道它会忽略它。

    我的下一个问题是,“好吧,也许您可​​以提供自己的FilterProcessor 实现并将其换掉并在某处实际使用该对象”。但是,唉,除非您想要/需要在ZuulServlet 中实现更多功能,否则情况似乎并非如此?

    最后,我想,“好吧,也许这只是一个约定俗成的事情”。但是java.lang.Runnable.run() 是无效的,javax.servlet.Filter.doFilter 也是无效的。

    所以现在,我最好的猜测是,就像我们所有人在职业生涯的某个阶段一样,我们有时会陷入YAGNI 的境地;也许这只是一个例子。

    【讨论】:

      猜你喜欢
      • 2017-02-09
      • 2020-03-14
      • 2019-04-08
      • 1970-01-01
      • 2017-08-23
      • 2016-07-11
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多