spring cloud gateway 深入了解 - Predicate
spring cloud gateway 通过谓词(Predicate)来匹配来自用户的请求
为了方便,使用postman测试不同的谓词的效果
路径谓词(Predicate)—— 最简单的谓词
- 配置如下
spring:
cloud:
gateway:
routes:
# 匹配指定路径的路由
- id: path_route
uri: http://www.baidu.com
predicates:
- Path=/baidu/**
filters:
- StripPrefix=1
Path
谓词配置的- Path=/baidu/**
的作用是:匹配所有请求路径以http://localhost:8888/baidu
开头的用户请求- 用postman请求
http://localhost:8888/baidu
,返回百度网页的HTML,效果如图
cookie谓词
- 配置如下
spring:
cloud:
gateway:
routes:
# 匹配指定cookie的路由
- id: cookie_route
uri: http://www.taobao.com
predicates:
- Cookie=chocolate, value
Cookie
谓词配置的- Cookie=chocolate, value
的作用是:匹配请求中存在cookiechocolate=value
的所有请求- 注意:
- Cookie=chocolate, value
中的value
是正则表达式
- 注意:
- 用postman随便请求一个url
http://localhost:8888/1111111
,只要存在cookiechocolate=value
,都网关都会匹配到对应路由,最后返回淘宝的HTML,效果如图
请求头谓词
- 配置如下
spring:
cloud:
gateway:
routes:
# 匹配指定请求头的路由
- id: header_route
uri: http://www.jd.com/
predicates:
- Header=X-Request-Id, \d+
Header
谓词配置的- Header=X-Request-Id, \d+
的作用是:匹配请求头中存在符合条件“key为X-Request-Id,value为数字”的所有请求- 注意:
Header=X-Request-Id, \d+
,第二个参数是正则表达式,如\d+
- 注意:
- 用postman随便请求一个url
http://localhost:8888/2222222
,只要请求头中符合key为X-Request-Id,value为数字
,都网关都会匹配到对应路由,最后返回京东的HTML,效果如图
请求参数谓词
- 配置如下
spring:
cloud:
gateway:
routes:
# 匹配指定请求参数的路由
- id: cookie_route
uri: http://tmall.com/
predicates:
- Query=param1,value
上面请求参数谓词
- Query=param1,value
的含义是: 匹配所有含有请求参数param1
且它的值符合正则表达式value
的请求- 注意:
- Query=param1,value
中的value
是正则表达式 - 注意:
- Query=param1,value
中的value
可以省略- 即可变成
- Query=param1
,这是匹配所有请求参数含有param1
的请求并且不筛选值
- 即可变成
- 注意:
效果如下
其他谓词
host
谓词匹配对应的host,如下匹配www.somehost.org
或beta.somehost.org
等
spring:
cloud:
gateway:
routes:
- id: host_route
uri: http://example.org
predicates:
- Host=**.somehost.org
Method
方法谓词匹配如get
,post
等请求的方法
spring:
cloud:
gateway:
routes:
- id: method_route
uri: http://example.org
predicates:
- Method=GET
RemoteAddr
为ip地址谓词,匹配对应ip地址
spring:
cloud:
gateway:
routes:
- id: remoteaddr_route
uri: http://example.org
predicates:
- RemoteAddr=192.168.1.1/24
After
、Before
、Between
等时间谓词,分别匹配在某时之后,之前,和某段时间内的请求
谓词组合
- 不同谓词之间可以组合使用。它们同时存在于同一个路由时,请求必须同时满足所有的谓词条件才被这个路由匹配。
- 注意:一个请求满足多个路由的谓词条件时,请求只会被首个成功匹配的路由转发
- 配置如下
spring:
cloud:
gateway:
routes:
# 匹配指定请求参数和请求头的路由
- id: compose_route
uri: http://www.oschina.net/
predicates:
- Query=param2
- Header=Header-Route,value
- 效果如下
spring cloud gateway 深入了解 - Predicate的更多相关文章
- Spring Cloud Gateway Route Predicate Factory 的使用
Spring Cloud Gateway的使用 一.需求 二.基本组成 1.简介 2.核型概念 1.Route 路由 2.Predicate 谓语.断言 3.Filter 过滤器 3.工作原理 三.网 ...
- Spring Cloud Gateway实战之四:内置predicate小结
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 从0开始构建你的api网关--Spring Cloud Gateway网关实战及原理解析
API 网关 API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题 ...
- api网关揭秘--spring cloud gateway源码解析
要想了解spring cloud gateway的源码,要熟悉spring webflux,我的上篇文章介绍了spring webflux. 1.gateway 和zuul对比 I am the au ...
- Spring Cloud Gateway服务网关
原文:https://www.cnblogs.com/ityouknow/p/10141740.html Spring 官方最终还是按捺不住推出了自己的网关组件:Spring Cloud Gatewa ...
- spring cloud gateway之filter篇
转载请标明出处: https://www.fangzhipeng.com 本文出自方志朋的博客 在上一篇文章详细的介绍了Gateway的Predict,Predict决定了请求由哪一个路由处理,在路由 ...
- 网关服务Spring Cloud Gateway(一)
Spring 官方最终还是按捺不住推出了自己的网关组件:Spring Cloud Gateway ,相比之前我们使用的 Zuul(1.x) 它有哪些优势呢?Zuul(1.x) 基于 Servlet,使 ...
- 微服务网关 Spring Cloud Gateway
1. 为什么是Spring Cloud Gateway 一句话,Spring Cloud已经放弃Netflix Zuul了.现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是 ...
- 跟我学SpringCloud | 第十二篇:Spring Cloud Gateway初探
SpringCloud系列教程 | 第十二篇:Spring Cloud Gateway初探 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如 ...
随机推荐
- JavaScript中eval函数的用法
1. eval函数会计算传给的字符串, 并把作为脚本代码来执行. eval(str) 此函数接受一个字符串作为参数,并把str当做一段JavaScript脚本代码来执行,如果str执行结果返回一个值则 ...
- Spring Cloud Sleuth + Zipkin 链路监控
原文:https://blog.csdn.net/hubo_88/article/details/80878632 在微服务系统中,随着业务的发展,系统会变得越来越大,那么各个服务之间的调用关系也就变 ...
- 中国网络安全行业分类及全景图2019H1
中国网络安全行业分类及全景图2019H1 概述 中国网络安全行业分类及全景图: 一级分类包含了端点安全.网络安全.应用安全.数据安全.身份与访问管理和安全管理六个一级分类,这些一级分类分别对应了网 ...
- 第03节-BLE协议各层数据格式概述
本篇博客根据韦大仙的视频,整理所得. 对于BLE系统,它分为上下两块.上面那一块,我们称为host主机.下面这一块是controller,你可以简单的认为它就是一个蓝牙芯片. 对于host这一块,它运 ...
- nginx 静态资源服务
1.文件压缩 location ~ .*\.(jpg|gif|png)$ { gzip on(开启); gzip_http_version 1.1(版本); gzip_comp_level 2(压缩比 ...
- 如何让wordpress后台搜索只匹配搜索文章标题
今天编辑小美眉问网站wordpress后台能不能实现只搜索标题,这个问题怎么可能难到ytkah呢?打开Stack Overflow一顿狂搜,总数有解决方案了,哈哈哈!一起来看看怎么操作吧. 打开主题目 ...
- MacOS更改启动台(launchpad)图标大小
原文链接:https://www.jianshu.com/p/18224d191bd2作者:麦壳君 小麦有点强迫症,觉得 Mac 启动台(Launchpad)里面系统默认的应用程序图标太大,所以想让它 ...
- SDOI2010选做
Round1 D1T1外星千足虫 \(BSOJ2793\)--高斯消元解异或方程组 简述 有\(n\)个数\(\{a_i\}\) 给出\(m\)个信息,每个信息给出\(\displaystyle{(\ ...
- selenium--表格和复选框的定位
表格定位 HTML代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- selenium--等待的三种方式
前戏 在我们做UI自动化的时候,最不稳定的就是页面了,由于各种原因页面的元素没有加载出来,比如网速慢,服务器响应慢等等,这时候如果我们去操作页面的元素,selenium会给我们抛出一个NoSuchEl ...