Spring Cloud Gateway-过滤器

本节将为大家详细介绍Spring Could Gateway 内置过滤器相关内容。

Spring Cloud Gateway 过滤器为大家提供了修改特定路由中的http请求和响应的能力,默认提供了31种过滤器,基本满足大家的各种场景需求.

基本配置

过滤器的配置分为两种方式,一种是通过配置文件的方式(此方式有简化配置模式及详细配置模式两种,同断言,不再详述),一种是通过编码的方式。

配置文件(摘自官方文档):

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

Spring Cloud Gateway配置详解-过滤器相关推荐

  1. 微服务网关spring cloud gateway入门详解

    1.API网关 API 网关是一个处于应用程序或服务( REST API 接口服务)之前的系统,用来管理授权.访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的 ...

  2. Spring Cloud Gateway配置熔断CircuitBreaker

    我们使用的SpringCloud版本是Hoxton.SR9,小于G版本的是不支持CircuitBreaker的 CircuitBreaker原理 CircuitBreaker是由一个有限状态机实现的, ...

  3. SpringBoot配置文件中spring.profiles.active配置详解

    SpringBoot配置文件中spring.profiles.active配置详解 1.多环境配置 我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发.测 ...

  4. Spring Cloud限流详解(附源码)

    在高并发的应用中,限流往往是一个绕不开的话题.本文详细探讨在Spring Cloud中如何实现限流. 在 Zuul 上实现限流是个不错的选择,只需要编写一个过滤器就可以了,关键在于如何实现限流的算法. ...

  5. Spring Cloud限流详解(内含源码)

    为什么80%的码农都做不了架构师?>>>    原文:http://www.itmuch.com/spring-cloud-sum/spring-cloud-ratelimit/ 在 ...

  6. 【项目实战】Spring Cloud Gateway入门介绍 - 网关过滤器工厂

    一.全局过滤器GlobalFilter 全局过滤器是针对于网关而言通用的功能组件实现,采用全局来实现. 以下是两个如何全局过滤器GlobalFilter的实例 1.1 实例1:定义ForwardAut ...

  7. Spring Cloud Gateway –配置简单路由

    可以将Spring Cloud Gateway视为Spring Cloud Netflix Zuul项目的后续产品,并有助于在微服务环境中实现Gateway模式 . 它建立在 Spring Boot ...

  8. Spring Cloud Feign使用详解

     通过前面两章对Spring Cloud Ribbon和Spring Cloud Hystrix的介绍,我们已经掌握了开发微服务应用时,两个重要武器,学会了如何在微服务架构中实现客户端负载均衡的服务调 ...

  9. Spring拦截器配置详解(如何定义一个拦截器)

    一.前言 Spring和SpringBoot的拦截器也是对请求进行的系列验证或处理,关于拦截器和过滤器的区别此文不做介绍,之前我看到过一篇相关系列的文章,讲述的还比较详细,给大家参考参考:拦截器与过滤 ...

最新文章

  1. 机智云5.0推出IoT套件GoKit4.0 可实现物联网应用协同开发
  2. linux 内核加载错误 Invalid module format
  3. iOS中 加强日志输出 开发技术总结
  4. 深度学习核心技术精讲100篇(五)-通过CTR预估对比深度学习模型(deepfm)梯度提升模型(catboost)
  5. VTK序列图像的读取
  6. 使用EventViewer记录VSTO add-in启动错误
  7. 【教程】jQuery打造动态下滑菜单
  8. Google Chrome浏览器可能在您不知情的情况下破坏了您的测试
  9. 前端学习(3202):函数式组件
  10. python下载图片的命令_网上的图片不知道怎么批量下载?python教你怎么把网站上面的图片都爬下来...
  11. 能运行shell吗_terminal, shell, bash, zsh
  12. 删除当前文件夹下特定名称文件
  13. 句向量的表示(上)—无监督
  14. SpringMVC之RequestParam详解
  15. 使用Hexo+Github一步步搭建属于自己的博客(基础)
  16. 【基础教程】基于matlab疫情防护动图制作【含Matlab源码 028期】
  17. mysql物业管理系统设计_Java开发物业管理系统:数据库表单设计
  18. 将 N 叉树编码为二叉树
  19. 锁定计算机屏幕的快捷键是什么,锁住电脑屏幕的快捷键_打开电脑屏幕的快捷键...
  20. 微信小程序--瀑布流布局

热门文章

  1. 计算机等级和计算应用区别,全国计算机等级考试一级和二级的区别是什么?
  2. Kraken taxonomic sequence classification system
  3. [附源码]JSP+ssm计算机毕业设计艾儿影楼管理系统18llj【源码、数据库、LW、部署】
  4. 金蝶云如何html5登录,可以在移动端进行云之家登录,也可以通过网页登录
  5. 浏览器,服务器,浏览器和服务器之间的通信协议
  6. 运营型CRM系统(运营型客户关系管理)只是针对于运营的吗?
  7. 信息与网络安全(五)——网络安全协议与AES算法
  8. js如何精确判断是否是数组?
  9. 什么是等离子体?什么是等离子体效应?
  10. geoserver发布tif格式数据