Spring Cloud Alibaba#25.Gateway配置路由规则

本文讲解Gateway如何配置路由规则

笔记对应学习视频:

itlaoqi.com/chapter/266

三个关键名词


谓词

Spring Cloud Gateway 将路由作为 Spring WebFlux HandlerMapping 基础结构的一部分进行匹配。Spring Cloud Gateway 包含许多内置的路由谓词工厂。所有这些谓词都匹配 HTTP 请求的不同属性。多个谓词工厂可以通过逻辑与进行组合。



After 路由谓词工厂采用一个 datetime 类型的参数。此谓词匹配当前日期时间之后发生的请求。

application.yml

此路由与 2017 年 1 月 20 日 17:42 MountainTime(Denver)之后的所有请求相匹配。



Before 路由谓词工厂采用一个 datetime 类型的参数。此谓词匹配当前日期时间之前发生的请求。

application.yml

此路由与 2017 年 1 月 20 日 17:42 MountainTime(Denver)之后的所有请求相匹配。



此路由与 2017 年 1 月 20 日 17:42 Mountain Time (Denver)之后和 2017 年 1 月 21 日17:42 Mountain Time (Denver)之前的所有请求相匹配,这对维护窗口很有用。




Cookie 路由谓词工厂采用两个参数,cookie 名称和正则表达式。此谓词匹配具有给定名称的 cookie,值与正则表达式匹配。

application.yml

此路由与请求匹配的 cookie 名称为 chocolate,其值与 CH.P 正则表达式匹配。

Header 路由谓词工厂采用两个参数,Header 名称和正则表达式。此谓词与具有给定名称且值与正则表达式匹配的 Header 匹配。

application.yml

如果请求具有名为 X-Request-Id 的 Header,其值与\d+正则表达式匹配(具有一个或多个数字的值),则该路由匹配。

Host 路由谓词工厂采用一个参数:主机名模式。该模式是一种 Ant 样式模式作为分隔符。此谓词与匹配该模式的主机头部匹配。

application.yml

如果请求的主机头部具有值 somehost.orgbeta.somehost.org,则此路由将匹配。

Method 路由谓词工厂采用一个参数:要匹配的 HTTP 方法。

application.yml

如果请求方法是 GET,则此路由将匹配。


Path 路由谓词工厂采用一个参数:Spring PurthMatter 模式。

application.yml

如果请求路径如:/foo/1 或/foo/bar,则此路由将匹配。

此谓词提取 URI 模板变量(如上面示例中定义的 segment)作为名称和值的映射,并将其放置在 ServerWebExchange.getAttributes()中,其中键定义在

PathRoutePre.e.URL_PREDICATE_VARS_ATTR 中。这些值随后可供网关过滤器工厂使用。




Query 路由谓词工厂采用两个参数:一个必需的参数和一个可选的正则表达式。

application.yml

如果请求包含 baz 查询参数,此路由将匹配。

application.ym

如果请求包含一个 foo 查询参数,它的值与 ba.正则表达式匹配,则此路由将匹配,所以bar 和 baz 都将匹配。



RemoteAddr 路由谓词工厂采用 CIDR 符号(IPv4 或 IPv6)字符串的列表(最小值为1),例如 192.168.0.1/16(其中 192.168.0.1 是 IP 地址,16 是子网掩码)。

application.yml

如果请求的远程地址为192.1681.10,则该路由将匹配。

. GatewayFilter 过滤器

路由过滤器允许以某种方式修改传入 HTTP 请求或传出 HTTP 响应。路由过滤器的作用域是特定的路由。Spring Cloud Gateway 包括许多内置的网关过滤器工厂。有关如何使用以下过滤器的更详细示例,请参阅unit tests 单元测试

过滤器



AddRequestHeader过滤器使用两个参数(name && value )


application.yml

这个路由所有匹配请求的下游请求的头部中添加了 X-Request-red: blue。

AddRequestHeader通常用户匹配请求路径或者host中的变量。下面的例子中会将诸如 xxx.org/red/snzz 中的 snzz 放入 X-Request-red的value中。


application.yml



AddRequestParameter过滤器接受 name和 value参数

application.yml

上面的例子中为所有请求的下游请求的查询字符串red=blue。

通常用于为指定请求路径或者域名的请求中添加请求参数,下面的例子中。会为 myhost.org域名下的所有请求加上一个参数,假如访问的是 dev.myhost.org,那么请求中就会加上一个foo=bar-dev的参数。



AddResponseHeader 采用 name和 value 参数:

这将为所有匹配请求的下游响应头添加 X-Response-Red: Bar 头。

通常用于为指定请求路径或者域名的请求响应的消息头添加参数,下面的例子中。会为 myhost.org域名下的所有请求响应体的头部加上一个参数,假如访问的是 dev.myhost.org,那么响应头中就会加上一个foo=bar-dev的参数。



DedupeResponseHeader接受一个name参数和一个可选的strategy 参数。Name可以包含以空格分隔的header名称列表。

在网关 CORS 逻辑和下游逻辑都添加了Access-Control-Allow-Credentials和Access-Control-Allow-Origin响应头的情况下,这将删除重复的值。

DedupeResponseHeader过滤器还接受一个可选的策略参数。接受的值是 RETAIN_FIRST (默认值:保留第一个)、 RETAIN_FIRST (保留最后一个)和 RETAIN_UNIQUE(保留唯一的)。



Spring Cloud 断路器网关过滤器工厂使用 Spring Cloud 断路器 api 将网关路由包裹在断路器中。 支持多个可以与 Spring 云网关一起使用的库。 Spring Cloud 开箱即用地支持Resilience4J。

要启用 Spring Cloud CircuitBreaker 过滤器,需要将 Spring-Cloud-starter-CircuitBreaker-reactor-resilience4j 放在类路径上。

application.yml

可以参考下面的API文档来配置这个断路器。Resilience4J Documentation

你可以声明spring.cloud.gateway.default-filters来为所有的路由添加过滤器,这个属性是一个list。

application.yml

上面的配置会为httpbin请求路径下的请求的ResponseHeader中加入参数X-Response-Default-Red=Default-Blue。

代做工资流水公司淄博代开入职银行流水嘉兴制作工资流水单无锡银行对公流水办理上海代办工资流水账单许昌签证工资流水价格赣州消费贷流水价格桂林打签证银行流水银川查询房贷工资流水贵阳做背调流水曲靖打印签证工资流水徐州流水模板宁波代做自存流水黄冈入职工资流水代做温州开入职工资流水赣州流水单代做吉林代办薪资流水厦门代开银行流水PS北京办银行对公流水深圳银行对公流水查询大连银行流水修改多少钱绵阳查企业对公流水南阳银行对公流水开具汕头企业对公流水代做成都日常消费流水办理洛阳查转账银行流水许昌企业对公流水打印临沂对公银行流水开具长春签证流水价格代做离职证明宁波打印贷款流水香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化