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过滤器返回值的主要内容,如果未能解决你的问题,请参考以下文章

zuul实现模块异常统一拦截返回

springcloud zuul 网关

Zuul Proxy CORS 头包含多个值,头重复两次 - Java Spring Boot CORS 过滤器配置

Spring Cloud - Zuul添加过滤器

TZ_14_Zuul网关_过滤器

使用网关zuul过滤器登录鉴权