Zuul 过滤器返回值

JeB*_*JeB 9 java spring spring-boot netflix-zuul

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

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

那么为什么要拥有它呢?

Her*_*del 1

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

我上线了zuul-core:1.3.1

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

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

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

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

最后,我想,“好吧,也许这只是一个惯例”。却java.lang.Runnable.run()是虚空,javax.servlet.Filter.doFilter亦是虚空。

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