一、GatewayFilter是什么?用来做什么的?
GatewayFilter是网关中提供的一种过滤器。
可以对进入网关的请求和微服务返回的响应做处理,处理流程如下:
二、路由过滤器的种类
Spring提供了30多种不同的路由过滤器工厂:GatewayFilter Factories官方文档
下面列举几种,例如:
名称 | 说明 |
---|---|
AddRequestHeader | 给当前请求添加一个请求头 |
RemoveRequestHeader | 移除请求中的一个请求头 |
AddResponseHeader | 给响应结果中添加一个响应头 |
RemoveResponseHeader | 从响应结果中移除有一个响应头 |
RequestRateLimiter | 限制请求的流量 |
… | … |
三、GatewayFilter过滤器使用方式
1、路由过滤器,以AddRequestHeader(请求头过滤器)为例演示
需求:给所有进入userservice服务的请求添加一个请求头:
Truth=itcast is freaking awesome!
解决方式:修改gateway服务的application.yml文件,添加路由请求头过滤:
spring:
cloud:
gateway:
routes:
- id: user-service
uri: lb://userservice
predicates:
- Path=/user/**
filters: # 过滤器
- AddRequestHeader=Truth, Itcast is freaking awesome! # 添加请求头
2、默认过滤器,还是以上述需求为例进行演示
首先,什么是默认过滤器? 即,对所有路由均生效的过滤器。
使用格式如下:(写在default下)
spring:
cloud:
gateway:
routes:
- id: user-service
uri: lb://userservice
predicates:
- Path=/user/**
default-filters: # 默认过滤项
- AddRequestHeader=Truth, Itcast is freaking awesome!