在Spring Cloud Zuul中,Zuul自己有几个核心过滤器源码如下
其中 ServletDetectionFilter优先级最高 为-3 ,因此最早执行,这个核心过滤器只是作了一个判断当前请求是经过Spring的DispatcherServlet处理运行,还是经过ZuulServlet来处理运行,并把结果放回上下文中。
通常般状况下,发送到API网关的外部请求都会被Spring的DispatcherServlet处理,除了经过/zuul/路径访问的请求会绕过DispatcherServlet,被ZuulServlet处理,主要用来应对处理大文件上传的状况。
在这里上传文件时通过DispatcherServlet文件就会为null,不通过DispatcherServlet处理,文件就有值,所以在前台调用服务时在服务前面加一个zuul路径即可。
如下:
没有写zuul路径的,在源码中执行if中的语句,如下
写了zuul路径的在源码中执行else的语句:
只要执行else里面的语句,此时文件就有值。