• gateway的主要功能之一是转发请求,转发规则的定义主要包含三个部分

    组成 描述
    路由 Route 路由是网关的基本单元, 由ID、URI、一组Predicate、一组Filter组成,根据Predicate进行匹配转发。
    断言 Predicate 路由转发的判断条件,目前SpringCloud Gateway支持多种方式, 常见如:Path、Query、Method、Header等,写法必须遵循 key=vlue的形式
    过滤器 Filter 过滤器是路由转发请求时所经过的过滤逻辑,可用于修改请求、响应内容
  • 修改yml文件,
  • 添加
  • routes:- id: consumer                  #自定义uri: lb://service-consumer    #访问路径predicates:                      #断言- Path=/consumer/**filters:                     #过滤器- StripPrefix=1 

7.3.2 predicates 断言

在 Spring Cloud Gateway 中 Spring 利用 Predicate 的特性实现了各种路由匹配规则,有通过 Header、请求参数等不同的条件,来进行作为条件匹配到对应的路由。

简单来说, Predicate 就是一组匹配规则,方便请求过来时,匹配到对应的 Route 进行处理。

  • Spring Cloud GateWay 内置多种 Predicate ,如下:

规则 实例
Path - Path=/gate/,/rule/
Before - Before=2017-01-20T17:42:47.789-07:00[America/Denver]
After - After=2017-01-20T17:42:47.789-07:00[America/Denver]
Between - Between=2017-01-20T17:42:47.789-07:00[America/Denver],2017-01-21T17:42:47.789-07:00[America/Denver]
Cookie - Cookie=chocolate, ch.p
Header - Header=X-Request-Id, \d+
Host - Host=www.hd123.com
Method - Method=GET
Query - Query=baz
RemoteAddr - RemoteAddr=192.168.1.1/24
  • 实例1:通过请求参数匹配

    spring:cloud:gateway:routes:- id: queryuri: http://www.czxy.compredicates:- Query=my,123
    #访问路径,有参数my将转发到www.czxy.com
    http://localhost:10010/?my=123
  • 实例2:通过请求路径匹配

    spring:cloud:gateway:routes:- id: pathuri: http://www.czxy.compredicates:- Path=/czxy/{flag}
    # 
    http://localhost:10010/czxy/666
  • 总结:

    • 各种 Predicates 同时存在于同一个路由时,请求必须同时满足所有的条件才被这个路由匹配。

    • 一个请求满足多个路由的断言条件时,请求只会被首个成功匹配的路由转发

7.3.3 Filter 网关过滤器

  • 路由过滤器允许以某种方式修改传入的HTTP请求或传出HTTP响应。

过滤规则 实例 说明
PrefixPath - PrefixPath=/app 对所有的请求路径添加前缀app
RedirectTo - RedirectTo=302, 首页 - 传智专修学院 重定向,配置包含重定向的返回码和地址
RemoveRequestHeader - RemoveRequestHeader=X-Request-Foo 去掉某个请求头信息
RemoveResponseHeade - RemoveResponseHeader=X-Request-Foo 去掉某个响应头信息
RemoveRequestParameter - RemoveRequestParameter=red 去掉某个请求参数信息
RewritePath - RewritePath=/where(?<segment>/?.), /test(?<segment>/?.) 改写路径 /where/... 改成 /test/...
SetPath - SetPath=/{segment} 设置请求路径,与RewritePath类似
SetRequestHeader - SetRequestHeader=X-Request-Red, Blue 设置请求头信息
SetStatus - SetStatus=401 设置响应状态码
StripPrefix - StripPrefix=2 跳过指定路径
RequestSize - name: RequestSize args: maxSize: 5000000 请求大小
  • 实例1:跳过指定路径

  • spring:cloud:gateway:routes:- id: consumeruri: lb://service-consumer  predicates:- Path=/consumer/**       filters:- StripPrefix=1
  • 实例2:添加前缀

    #rest  --> http://localhost:10010/consumer/echo/123
    #fegin --> http://localhost:10010/consumer/feign/echo/123
    ​
    
    
    spring:cloud:gateway:routes:- id: PrefixPathuri: lb://service-consumerpredicates:- Path=/consumer/**filters:- StripPrefix=1- PrefixPath=/feign
    ​
    #feign  --> http://localhost:10010/consumer/echo/123
  • 实例3:改写路径

    #rest --> http://localhost:10010/consumer/echo/123​
    
    spring:cloud:gateway:routes:- id: RewritePathuri: lb://service-consumerpredicates:- Path=/consumer/**filters:- RewritePath=/consumer(?<segment>/?.*), $\{segment}
    ​
    

    # 正则表达式详解:

    # ?<segment> --> 名称为 segment 的组
    # /?         --> /出现0次或1次
    # .*         --> 任意字符出现0次或多次
    # 总结:将 /?.*匹配到的结果捕获到名称为segment的组中

    # $\{segment} --> 将名称为 segment 的分组捕获到的文本置换到此处
    ## 注意,\的出现是由于避免 yaml 语法认为这是一个变量

互联网技术-alibaba-gateway网关中routers路由匹配规则相关推荐

  1. 云南农业职业技术学院 / 互联网技术学院官网 HTML5+CSS3

    HTML学完后写了,有小组成员参与开发,我只写了主页,那就只贴主页的代码出来了. 作为初学者,代码写得不太好,写博客纯属记录!有问题望指导! 码云开源仓库地址:https://gitee.com/yn ...

  2. Nginx篇之路由匹配规则以及配置url转发

    一.前言 一般我们经常在访问网站时,通常会遇到输入某个页面的网址时,出现路由的转发,重定向等.可能访问的是一个网址,出来的时候就显示的是另外的地址. 这种情况下,通常属于nginx的页面跳转. 二.N ...

  3. django中路由匹配规则

    1.定义 指url与后端视图之间的一一映射关系 2.添加路由以及匹配规则 1)需要在全局路由文件中(url.py),urlpatterns列表中添加路由条目 2)urlpatterns是固定的,是列表 ...

  4. linux 路由匹配原则,Nginx localhost路由匹配规则

    URI 即统一标识资源符,通用的 URI 语法格式如下: scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment] 格式说明 ...

  5. expressjs路由匹配规则

    expressjs作为nodejs的MVC框架,其路由规则与大部分其他MVC框架类似,略有不同,研究后做个小记. expressjs路由在app.js中配置,app.js源码如下(不同的版本会有所不同 ...

  6. 高能预警!各路大神正火速奔赴8月WOT2016 移动互联网技术峰会

    2016年8月26-27日,由51CTO.com主办的WOT2016移动互联网技术大会将在北京珠三角JW万豪酒店拉开序幕.届时,预计将有超过1000名企业技术管理.移动开发和技术创业人员共赴一堂,与各 ...

  7. 记录 Spring Cloud GateWay 使用 路径与路由名字重复 出现的问题

    大家好,我是小文,这篇文章是我使用 SCG 所出现的问题.在这里记录一下. 1.某个服务中新建了一个控制器Controller,没有遵循网关的路由匹配规则,报错404: 2.路由规则与注册服务名出现重 ...

  8. React 路由匹配模式

    React 路由匹配模式 react中的路由按照路径的正则进行匹配,很容易出现同时匹配多个路由组件的情况,路由规则提供了一个唯一匹配模式组件:Switch 问题:添加Switch没有任何反应,且各个页 ...

  9. SpringCloud Alibaba微服务实战(七) - 路由网关(Gateway)全局过滤

    说在前面 全局过滤器作用于所有的路由,不需要单独配置,我们可以用它来实现很多统一化处理的业务需求,比如权限认证,IP 访问限制,监控,限流等等. 创建路由网关(Gateway)启动服务cloud-ac ...

最新文章

  1. 谈谈《潜伏在办公室》对管理层的影响
  2. 科学说忘记一个人只要七年
  3. mysql 5.7 双主配置_MySQL5.7.18 双主配置
  4. asp.net MVC 应用程序的生命周期
  5. android相关论文,android
  6. 华为技术有限公司申请“荣耀视频”、“荣耀钱包”等商标
  7. 使用C++开发的NES(FC)模拟器
  8. 如何用一台普通相机拍照红蓝立体3D图片
  9. 二维码门禁的解决方案
  10. 零基础学C语言 第3版 pdf
  11. Android源码编译详解【四】:Android 6.0_源码的下载与编译
  12. 如何恢复硬盘数据,包括硬盘文件名乱码
  13. 贵州2021高考成绩排名查询,贵州高考排名查询方法,2021年贵州高考成绩位次全省排名查询...
  14. 计算机英语反思总结怎么写,英语考试反思总结
  15. 解决Word、Excel启动时提示向程序发送命令出现问题
  16. 第五章 CSS美化网页元素
  17. 边缘计算导论——中山大学程旭老师课程总结
  18. 寒假作业1:打印沙漏
  19. 实战大项目:模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容----登录第一步
  20. unit8_t, unit16_t, unit32_t, unit64_t

热门文章

  1. 【前端学习】Day-16 JS基础、循环、函数、数组、字符串、字典
  2. 作为 Android 开发者,如何深入学习 Android UI?
  3. 安卓仿陌陌用户详情页轮播图联动效果
  4. 清晰的理解大端和小端
  5. MySQL 文件结构、逻辑架构及 sql 执行流程分析作者:Java后端架构
  6. python内置模块re_python内置模块[re]
  7. git的使用——reset
  8. 大数据技术原理与应用(第十章 Spark)
  9. 多元线性回归算法预测房价——Excel、jupyter+sklearn
  10. NowcoderGirl编程比赛(三)