Spring Cloud的API网关不但可以实现类似NGINX+Lua强大的路由分发,实现动静页面的分流,更重要可以实现对所有发往后端微服务请求的拦截。Zuul主要有四种类型的过滤器,我们可以为特定的url模式添加任意数量的过滤器。
- “pre” 预过滤器 - 在路由分发一个请求之前调用。
- “post” 后过滤器 - 在路由分发一个请求后调用。
- “route” 路由过滤器 - 用于路由请求分发。
- “error” 错误过滤器 - 在处理请求时发生错误时调用
上图显示这几种过滤器的前后调用顺序,第一个是pre过滤器然后是Route过滤器,最后响应是post过滤器。
下面我们开始演示这几种过滤器的开发,Springcloud的开发三板斧就是pom.xml、application配置和元注解三种,首先pom.xml如下:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
下面是自己实现这四种过滤器,只要实现com.netflix.zuul.ZuulFilter接口,然后实现方法filterType,返回字符串为这四种类型pre post route