GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理:
Spring提供了31种不同的路由过滤器工厂。例如:
名称 | 说明 |
---|---|
AddRequestHeader | 给当前请求添加一个请求头 |
RemoveRequestHeader | 移除请求中的一个请求头 |
AddResponseHeader | 给响应结果中添加一个响应头 |
RemoveResponseHeader | 从响应结果中移除有一个响应头 |
RequestRateLimiter | 限制请求的流量 |
只需要修改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