Spring Cloud Gateway 过滤器工厂详解
Predicate 决定了请求由哪一个路由处理,如果在请求处理前后需要加一些逻辑,这就是 Filter(过滤器)的作用范围了。
Filter 分为两种类型:Pre 类型和 Post 类型。
Pre 类型过滤器:路由处理之前执行(请求转发到后端服务之前执行),在 Pre 类型过滤器中可以做鉴权、限流等。 Post 类型过滤器:请求执行完成后,将结果返回给客户端之前执行。
Spring Cloud Gateway 中内置了很多 Filter,用于拦截和链式处理 Web 请求。比如权限校验、访问超时等设定。
Spring Cloud Gateway 从作用范围上,把 Filter 可分为 GatewayFilter 和 GlobalFilter。
GatewayFilter:应用到单个路由或者一个分组的路由上。 GlobalFilter:应用到所有的路由上,也就是对所有的请求生效。
GatewayFilter
GatewayFilter 同 Predicate 类似,都是在配置文件 application.yml 中配置,每个过滤器的逻辑都是固定的。比如 AddRequestParameterGatewayFilterFactory 只需要在配置文件中写 AddRequestParameter,就可以为所有的请求添加一个参数,我们先通过一个例子来演示 GatewayFilter 如何使用。
application.yml
server:
port: 8888
spring:
application:
name: gateway
cloud:
nacos:
discovery:
server-addr: 47.98.109.138:8848
gateway:
metrics:
enabled: true
routes:
- id: order-service
uri: lb://order-service/
predicates:
- Path=/order/**,/feign/**
filters:
- AddRequestParameter=userName,xiaoming
- id: product-service

















