标识网关@EnableZuulProxy和@EnableZuulServer有什么区别
使用@EnableZuulProxy和@EnableZuulServer注解来标识网关
1 |
|
@EnableZuulProxy包含了@EnableZuulServer中所有的过滤器,是@EnableZuulServer的超集
可以看到自动配置也是ZuulProxy继承的ZuulServer,所以ZuulProxy实现的内容更多,且ZuulProxy支持Ribbon和DiscoveryClient
1 | public class ZuulProxyAutoConfiguration extends ZuulServerAutoConfiguration |
@EnableZuulServer过滤器
前置过滤器
- ServletDetectionFilter 监测请求是否通过DispatcherServlet或者ZuulServlet,通过RequestContext中的isDispatcherServletRequest是否为true判断的
- FormBodyWrapperFilter 表单数据解析
- DebugFilter
- Servlet30WrapperFilter
过滤器
- SendResponseFilter 将代理请求的响应写入到当前响应中
路由过滤器
- SendForwardFilter
错误过滤器
SendErrorFilter
如果满足该条件
1
2ctx.getThrowable() != null
&& !ctx.getBoolean(SEND_ERROR_FILTER_RAN, false)
则将请求转发到配置的对应errorPath路径下
@EnableZuulProxy过滤器
除@EnableZuulServer中的过滤器外还包含了
前置过滤器
- PreDecorationFilter 根据提供的RouteLocator来进行判断如何进行路由
路由过滤器
- RibbonRoutingFilter 使用ribbon
- SimpleHostRoutingFilter