Spring Cloud Gateway-过滤器
本节将为大家详细介绍Spring Could Gateway 内置过滤器的相关内容。
Spring Cloud Gateway 过滤器为大家提供了修改特定路由中的http请求和响应的能力,默认提供了31种过滤器,基本满足大家的各种场景需求.
基本配置
过滤器的配置分为两种方式,一种是通过配置文件的方式(此方式有简化配置模式及详细配置模式两种,同断言,不再详述),一种是通过编码的方式。
配置文件(摘自官方文档):
spring:
cloud:
gateway:
routes:
- id: resource
uri: http://localhost:9000
predicates:
- Path=/resource
filters:
- TokenRelay=
编码方式(摘自官方文档):
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("resource", r -> r.path("/resource")
.filters(f -> f.tokenRelay())
.uri("http://localhost:9000"))
.build();
}
配置全局过滤器:
spring:
cloud:
gateway:
default-filters:
- AddResponseHeader=X-Response-Default-Red, Default-Blue
- PrefixPath=/httpbin
内置31种过滤器
在这里为大家一一介绍:
- AddRequestHeader :添加请求头
- AddRequestParameter:在Query String中添加请求参数,参数值可以是变量,具体值可以从PATH或Host中匹配
- AddResponseHeader:添加响应头
- DedupeResponseHeader:过滤重复响应头
- CircuitBreaker:熔断器
- FallbackHeaders:指定发生熔断时fallback响应头
- MapRequestHeader:添加新的请求头,值从已有请求头中获取
- PrefixPath:请求路径增加前缀
- PreserveHostHeader:配置是否将原始请求头发送到服务方
- RequestRateLimiter:请求频度控制,默认提供了基于Redis的频度控制过滤器,也可以自定义
- RedirectTo:重定向过滤器
- RemoveRequestHeader:删除请求头
- RemoveResponseHeader:删除响应头
- RemoveRequestParameter:删除请求参数
- RewritePath:重写PATH
- RewriteLocationResponseHeader:重写响应头中的Location
- RewriteResponseHeader:重写响应头
- SaveSession:强制触发WebSession::save
- SecureHeaders:添加一组安全相关的头信息到响应中
- SetPath:设置请求path
- SetRequestHeader:设置请求头(不添加新的)
- SetResponseHeader:设置响应头(不添加新的)
- SetStatus:设置响应状态
- StripPrefix:截断请求PATH
- Retry:重试过滤器
- RequestSize:限流器
- SetRequestHostHeader:设置请求host
- ModifyRequestBody:修改请求报文
- ModifyResponseBody:修改响应报文
- TokenRelay:配合OAuth2使用
- CacheRequestBody:根据权重进行路由