Gateway过滤器工厂

back

Gateway过滤器工厂


GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理:

路由过滤器的种类

Spring提供了31种不同的路由过滤器工厂。例如:

名称 说明
AddRequestHeader 给当前请求添加一个请求头
RemoveRequestHeader 移除请求中的一个请求头
AddResponseHeader 给响应结果中添加一个响应头
RemoveResponseHeader 从响应结果中移除有一个响应头
RequestRateLimiter 限制请求的流量

请求头过滤器

需求 :给所有进入categoryservice的请求添加一个请求头:origin=gateway

只需要修改gateway服务的application.yml文件,添加路由过滤即可:

spring:
  cloud:
    gateway:
      routes:
      - id: category-service 
        uri: lb://categoryservice 
        predicates: 
      - Path=/category/** 
        filters: # 过滤器
      - AddRequestHeader=origin, gateway # 添加请求头

当前过滤器写在categoryservice路由下,因此仅仅对访问categoryservice的请求有效。

默认过滤器

如果要对所有的路由都生效,则可以将过滤器工厂写到default下。格式如下:

spring:
  cloud:
    gateway:
      routes:
        - id: category-service 
          uri: lb://categoryservice 
          predicates: 
        - Path=/category/**
      default-filters: # 默认过滤项
        - AddRequestHeader=origin, gateway