Zuul过滤器返回值
Posted
技术标签:
【中文标题】Zuul过滤器返回值【英文标题】:Zuul filter return value 【发布时间】:2017-12-15 15:05:13 【问题描述】:ZuulFilter.run()
返回值的可能用法是什么?
所有示例(例如Spring example)都返回null
。
官方文档says:
可能会返回一些任意的工件。当前的实现忽略它。
那么为什么要拥有它呢?
【问题讨论】:
【参考方案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 的境地;也许这只是一个例子。
【讨论】:
以上是关于Zuul过滤器返回值的主要内容,如果未能解决你的问题,请参考以下文章