Spring Cloud Gateway配置详解-过滤器

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种过滤器

在这里为大家一一介绍:

序号过滤器作用参数名参数值示例(filters配置)备注
1AddRequestHeader添加请求头name,value添加的请求头及其值AddRequestHeader=X-Request-red, blue
2AddRequestParameter在Query String中添加请求参数,参数值可以是变量,具体值可以从PATH或Host中匹配name,value添加的参数名及其值AddRequestParameter=foo, bar-{segment}
3AddResponseHeader添加响应头name,value添加的响应头及其值AddResponseHeader=X-Response-Red, Blue
4DedupeResponseHeader过滤重复响应头name,strategy需要过滤的响应头及策略(保留第一个,保留最后一个,保留唯一值)DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin
5CircuitBreaker熔断器name,fallbackUri,statusCodes熔断器名称、熔断后的默认URI、熔断触发状态- CircuitBreaker=myCircuitBreaker使用熔断器需配置spring-cloud-starter-circuitbreaker-reactor-resilience4j,详见Resilience4J Documentation
6FallbackHeaders指定发生熔断时fallback响应头executionExceptionTypeHeaderName, executionExceptionMessageHeaderName, rootCauseExceptionTypeHeaderName, rootCauseExceptionMessageHeaderName异常类型、详情、根因类型、根因详情等响应头名称executionExceptionTypeHeaderName: Test-Header
7MapRequestHeader添加新的请求头,值从已有请求头中获取fromHeader,toHeader已有请求头名称,新请求头名称MapRequestHeader=Blue, X-Request-Red
8PrefixPath请求路径增加前缀prefix需增加的前缀PrefixPath=/mypath
9PreserveHostHeader配置是否将原始请求头发送到服务方--PreserveHostHeader
10RequestRateLimiter请求频度控制--默认提供了基于Redis的频度控制过滤器,也可以自定义
11RedirectTo重定向过滤器status,url重定向http status及重定向后的urlRedirectTo=302, https://acme.org
12RemoveRequestHeader删除请求头name待删除的请求头RemoveRequestHeader=X-Request-Foo
13RemoveResponseHeader删除响应头name待删除的响应头RemoveResponseHeader=X-Response-Foo
14RemoveRequestParameter删除请求参数name待删除的请求参数名RemoveRequestParameter=red
15RewritePath重写PATHregexp,replacement重写部分匹配规则,需替换的值RewritePath=/red/?(?<segment>.*), /$\{segment}匹配规则采用正则表达式,替换值支持从匹配中获取
16RewriteLocationResponseHeader重写响应头中的LocationstripVersionMode, locationHeaderName, hostValue, protocolsRegexpath中version处理模式,location响应头名称,host值,url协议头RewriteLocationResponseHeader=AS_IN_REQUEST, Location, ,
17RewriteResponseHeader重写响应头name,regexp,replacement响应头名称,需修改值的匹配规则,需替换的值RewriteResponseHeader=X-Response-Red, , password=[^&]+, password=***
18SaveSession强制触发WebSession::save--SaveSession
19SecureHeaders添加一组安全相关的头信息到响应中--SecureHeaders
20SetPath设置请求pathtemplatepath模板SetPath=/{segment}
21SetRequestHeader设置请求头(不添加新的)name,value请求头及其值SetRequestHeader=X-Request-Red, Blue
22SetResponseHeader设置响应头(不添加新的)name,value响应头及其值SetResponseHeader=X-Response-Red, Blue
23SetStatus设置响应状态status响应状态SetStatus=401
24StripPrefix截断请求PATHparts需截断的长度(’/'个数)StripPrefix=2
25Retry重试过滤器---详细配置
26RequestSize限流器maxSize请求最大报文大小maxSize: 5000000
27SetRequestHostHeader设置请求hosthost分组及权重SetRequestHostHeader=example.org
28ModifyRequestBody修改请求报文---只能通过 Java DSL 配置
29ModifyResponseBody修改响应报文---只能通过 Java DSL 配置
30TokenRelay配合OAuth2使用--TokenRelay=
31CacheRequestBody根据权重进行路由bodyClass请求体类型-详细配置
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EngineZhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值