Spring Cloud Gateway Predicate.Path过滤分析
源码位置
spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/handler/predicate/PathRoutePredicateFactory.java
过滤方法
@Overridepublic Predicate<ServerWebExchange> apply(Config config) {synchronized (this.pathPatternParser) {//仅在第一次调用路由时执行,将pattern字符串转PathPattern对象config.pathPattern = this.pathPatternParser.parse(config.pattern);}return exchange -> {PathContainer path = parsePath(exchange.getRequest().getURI().getPath());//path(url)转PathContainer对象
//在此位置设置断点,每次走到需要predicate.Path过滤的路径都会进入到这里boolean match = config.pathPattern.matches(path);//路径表达式匹配判断traceMatch("Pattern", config.pathPattern.getPatternString(), path, match);if (match) {PathMatchInfo uriTemplateVariables = config.pathPattern.matchAndExtract(path);exchange.getAttributes().put(URI_TEMPLATE_VARIABLES_ATTRIBUTE, uriTemplateVariables);return true;} else {return false;}};}
手动测试表达式效果
new PathPatternParser().parse("/sys*/**").matches(path)
匹配/sys-aaa/sadf、/sysf3s/sa等格式路径
进入逻辑:
onNext:reactor-core-3.1.10.RELEASE-sources.jar!/reactor/core/publisher/MonoFilterWhen.java
从这里进入gateway
lookupRoute:spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/handler/RoutePredicateHandlerMapping.java
进入
toAsyncPredicate:spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/support/ServerWebExchangeUtils.java
最后进入
lambda$apply$:spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/handler/predicate/PathRoutePredicateFactory.java
Spring Cloud Gateway Predicate.Path过滤分析相关推荐
- Spring Cloud Gateway 过滤器执行顺序原理分析
过滤器类型 GlobalFilter:全局过滤器,对所有路由生效.通过实现GlobalFilter接口创建 GatewayFilter:网关过滤器,也可以说是局部过滤器.自定义过滤器,只对配置了此过滤 ...
- spring cloud gateway 深入了解 - Predicate
文章来源 spring cloud gateway 通过谓词(Predicate)来匹配来自用户的请求 为了方便,使用postman测试不同的谓词的效果 路径谓词(Predicate)-- 最简单的谓 ...
- Spring Cloud Gateway 源码解析(3) —— Predicate
目录 RoutePredicateFactory GatewayPredicate AfterRoutePredicateFactory RoutePredicateHandlerMapping Fi ...
- Spring Cloud Gateway远程代码执行CVE-2022-22947漏洞分析及复现
0x01 漏洞描述 Spring Cloud Gateway 是基于 Spring Framework 和 Spring Boot 构建的 API 网关,它旨在为微服务架构提供一种简单.有效.统一的 ...
- 网关Spring Cloud Gateway科普
点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"获取公众号专属群聊入口 欢迎跳转到本文的原文链接:https://honeypp ...
- Spring Cloud Gateway一次请求调用源码解析
简介: 最近通过深入学习Spring Cloud Gateway发现这个框架的架构设计非常简单.有效,很多组件的设计都非常值得学习,本文就Spring Cloud Gateway做一个简单的介绍,以及 ...
- ws配置 zuul_微服务网关 Spring Cloud Gateway
1. 为什么是Spring Cloud Gateway 一句话,Spring Cloud已经放弃Netflix Zuul了.现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是 ...
- Spring Cloud Gateway源码系列之路由配置加载过程
当前章节主要是讲解配置文件中定义的路由配置被gateway加载,同时转为可以直接操作的路由对象 引入pom坐标 <dependency><groupId>org.springf ...
- 第五章 微服务网关Spring Cloud Gateway
5.1 微服务网关简介 第三章我们介绍了通过Spring Cloud LoadBalancer实现了微服务之间的调⽤和负载均衡,以及使⽤Spring Cloud OpenFeign声明式调⽤,那我们的 ...
最新文章
- 什么是跨域?怎么解决跨域问题?
- R语言获得所有Aesthetics(美学映射)参数:使用长表输出、使用宽表输出
- OpenStack 实现技术分解 (5) 应用开发 — 使用 OpenStackClients 进行二次开发
- python绘制多个条形图_python – 在Matplotlib中绘制多个直方图 – 颜色或并排条形图...
- 使用tcpdump查看HTTP请求响应 详细信息 数据
- Linux安装技巧--安装Uuntu与windows8/10共存
- python爬虫淘宝评论_Python爬取淘宝店铺和评论
- android 换行乱_Android自动换行布局
- 仅从设计和原理等技术角度看,Windows和Linux哪个系统更先进?
- 为什么说吉利博越定义了智能SUV
- 硬件知识:网线的分类知识笔记,看完你就懂了!
- JavaScript——DOM文档
- 关于《2012年我的十大工程》双季进展情况报告总结
- 手机uc打开本地html,(涨知识)关于手机UC浏览器折叠网页内容解决办法
- Tomcat修行之路-7.Tomcat-Mapper组件机制以及请求处理机制
- 2022-2027年中国分散染料行业市场全景评估及发展战略规划报告
- Javase day06_汇总
- 计算机组成原理:2. 计算机的发展及应用
- 大学C语言系统作业,南昌大学作业答疑系统c语言答案
- 新手福音!最全面的易懂CSS总结,一篇博文让你了解CSS,动一动小手收藏吧
热门文章
- 工作169:vue项目报错[Vue warn]: Property “visible“ must be accessed with “$data.visible“ because properties
- 前端学习(2515):父向子传值
- “约见”面试官系列之常见面试题之第七十五篇之vue中如何使当前css起作用(建议收藏)
- “约见”面试官系列之常见面试题之第七十四篇之v-if和v-for优先级(建议收藏)
- 前端学习(2026)vue之电商管理系统电商系统之实现分页功能
- 前端学习(1697):前端系列javascript之原型
- 前端学习(476):web前端行业介绍
- spring学习(37):注入list类型
- html:(35):缩进和行高
- sql 链接到oracle数据库,通过MSSQL连接服务器连接至Oracle数据库