介绍

:::tips GatewayFilter是通过配置文件的方式来添加过滤器的,处理逻辑是固定的,在SpringCloudGateway 组件中提供了31种不同的GatewayFilter,对请求和响应做过滤操作

GatewayFilter过滤器的作用是对路由的请求或响应做加工处理,比如添加请求头,去掉前缀路径,是通过配置使用的,不需要写java代码

  1. 配置到路由(routes)下filter中的过滤器只对当前路由的请求生效,是局部过滤器
  2. 配置到defaultFilters中的过滤器对所有路由都生效,是全局过滤器 ::: | 过滤器名称 | 说明 | | —- | —- | | AddRequestHeader | 对匹配上的请求加上Header | | AddRequestParameter | 对匹配上的请求参数 | | AddResponseHeader | 对从网关返回的响应添加Header | | PrefixPath | 为原始请求路径添加前缀 | | StripPrefix | 对匹配上的请求路径去除前缀 |

使用

路由过滤器(局部)

:::tips 路由过滤器是通过指定的路由规则对符合规则的请求做处理 :::

添加请求头(局部)

:::tips 在路由规则下对符合的请求添加一个请求头 :::

  1. server:
  2. #配置服务端口
  3. port: 端口号
  4. spring:
  5. application:
  6. #配置服务名称
  7. name: gateway
  8. cloud:
  9. nacos:
  10. #配置Nacos地址
  11. server-addr: localhost:8848
  12. #Gateway网关配置
  13. gateway:
  14. #网关路由配置
  15. routes:
  16. #自定义路由id,必须唯一
  17. - id: user-service
  18. #配置路由的目标地址,lb是负载均衡,后面填写服务名称
  19. uri: lb://userservice
  20. #路由断言,也就是判断请求是否符合路由的条件
  21. predicates:
  22. #按照请求路径匹配路由规则,请求路径以/user开头的请求就会被路由到配置的微服务中
  23. - Path=/user/**
  24. #路由过滤器,配置局部过滤规则
  25. filters:
  26. #添加请求头
  27. - AddRequestHeader=键,值

去除路径前缀(局部)

:::tips 对符合路由规则的请求去除请求路径前指定层数的路径,也就是访问这个服务时需要添加指定层数的路径才能访问到原始的请求地址 :::

  1. server:
  2. #配置服务端口
  3. port: 端口号
  4. spring:
  5. application:
  6. #配置服务名称
  7. name: gateway
  8. cloud:
  9. nacos:
  10. #配置Nacos地址
  11. server-addr: localhost:8848
  12. #Gateway网关配置
  13. gateway:
  14. #网关路由配置
  15. routes:
  16. #自定义路由id,必须唯一
  17. - id: user-service
  18. #配置路由的目标地址,lb是负载均衡,后面填写服务名称
  19. uri: lb://userservice
  20. #路由断言,也就是判断请求是否符合路由的条件
  21. predicates:
  22. #按照请求路径匹配路由规则,请求路径以/user开头的请求就会被路由到配置的微服务中
  23. - Path=/user/**
  24. #路由过滤器,配置局部过滤规则
  25. filters:
  26. #添加请求头
  27. - AddRequestHeader=键,值
  28. #去掉指定层数的路径前缀
  29. - StripPrefix=1

默认过滤器(全局)

:::tips 默认过滤器对所有经过Gateway网关的请求都生效 :::

  1. server:
  2. #配置服务端口
  3. port: 端口号
  4. spring:
  5. application:
  6. #配置服务名称
  7. name: gateway
  8. cloud:
  9. nacos:
  10. #配置Nacos地址
  11. server-addr: localhost:8848
  12. #Gateway网关配置
  13. gateway:
  14. #网关路由配置
  15. routes:
  16. #自定义路由id,必须唯一
  17. - id: user-service
  18. #配置路由的目标地址,lb是负载均衡,后面填写服务名称
  19. uri: lb://userservice
  20. #路由断言,也就是判断请求是否符合路由的条件
  21. predicates:
  22. #按照请求路径匹配路由规则,请求路径以/user开头的请求就会被路由到配置的微服务中
  23. - Path=/user/**
  24. #路由过滤器,配置局部过滤规则
  25. filters:
  26. #去掉指定层数的路径前缀
  27. - StripPrefix=1
  28. #默认过滤器,配置全局过滤规则
  29. default-filters:
  30. #添加请求头
  31. - AddRequestHeader=键,值