SpringCloud Gateway 过滤器有 pre 和 post 两种方式,请求首先经过 pre 过滤器处理,成功后被转发到对应的服务,然后经过 post 过滤器处理,将结果返回客户端。这种机制可以对http请求和响应进行修改。
在使用上,根据过滤器的作用范围则分为 GatewayFilter 网关过滤器和 GlobalFilter 全局过滤器,前者针对某个路由有效,需要在配置文件中的过滤器节点filters进行配置,也可以设置在default-filters上对所有路由生效;全局过滤器不需要配置,对所有路由生效。
1、GatewayFilter 网关过滤器
Gateway 内置了添加请求头,请求参数,响应头,删除请求头,请求参数,设置响应,状态,Hystrix熔断,重定向,重写路径,保存会话等十几种过滤器工厂,
也可以自定义 GatewayFilter, 需要实现 GatewayFilter 接口和 Order 接口。
2、GlobalFilter 全局过滤器
Gateway 内置了 LoadBalancer 负载均衡过滤器,
HttpClient http客户端过滤器,
Websocket相关过滤器,
ForwardPath 路径转发过滤器,
RouteToRequestUrl 转发路由Url过滤器,
WebClient 相关过滤器。
也可以自定义GlobalFilter,需要实现 GlobalFilter 接口和 Order 接口。