简单明了!网关Gateway路由配置filters实现路径重写及对应正则表达式的解析
最佳答案 问答题库768位专家为你答疑解惑
问题背景:
前端需要发送一个这样的请求,但出现404
首先解析请求的变化:
http://www.51xuecheng.cn/api/checkcode/pic
1.请求先打在nginx,www.51xuecheng.cn/api/checkcode/pic部分匹配到了之后会转发给网关进行处理变成localhost:63010/checkcode/pic
2.然后再转发到网关上,网关上的路由转发配置如下图。然后localhost:63010/checkcode/pic来到网关之后,发现符合/checkcode开头的请求,因此就转发拼接给uri中的去处理(此处为lb://checkcode。因此就变成localhost:63075/pic
但我们是需要localhost:63075/checkcode/pic才能把请求发送到对应服务。因此就要进行路由重写
这样的请求是能成功的
官网案例:
- RewritePath=/red(?<segment>/?.*), $\{segment}
spring:cloud:gateway:routes:- id: rewritepath_routeuri: https://example.orgpredicates:- Path=/red/**filters:- RewritePath=/red(?<segment>/?.*), $\{segment}
正则表达式解析:
命名分组:(?<segment>/?.*)
这一部分是将后面匹配的字符串捕获到一个名为segment的组中,如这个案例中就是将/?.*这部分自定义的捕获到segment中
- ?<segment>
名称为 segment 的组
- /?
字符/出现0次或1次
- .*
任意字符出现0次或多次
引用捕获文本:$\{segment}
将前面名为 segment 的组捕获到的字符串移动到此。
注意:此处\的出现是避免 yaml 认为这是一个变量${segment}
实例:
此处的路由意思就是去掉/checkcode/,并捕获后面的字符串,然后用/xxxx代替去掉的部分,再拼接捕获的部分。
如localhost:63075/checkcode/pic --> localhost:63075/xxxx/pic
- id: checkcodeuri: lb://checkcodepredicates:- Path=/checkcode/**filters:- RewritePath=/checkcode/?(?<segment>.*), /xxxx/$\{segment}
99%的人还看了
相似问题
- orvibo的Mini网关VS20ZW玩法
- 【Linux网络】搭建内外网的网关服务器,实现DNS分离解析与DHCP自动分配
- 电子电器架构 —— 车载网关边缘节点总线转换
- 搭建网关服务器实现DHCP自动分配、HTTP服务和免密登录
- EasyCVR视频监控+AI智能分析网关如何助力木材厂安全生产?
- 十一、统一网关GateWay(搭建网关、过滤器、跨越解决)
- 如何利用TSINGSEE青犀智能分析网关算法从人员、设备、行为三大角度进行监狱智能化升级改造
- 【从0到1设计一个网关】性能优化---使用Disruptor提供缓冲区
- 5G边缘计算网关 是什么?
- 基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
猜你感兴趣
版权申明
本文"简单明了!网关Gateway路由配置filters实现路径重写及对应正则表达式的解析":http://eshow365.cn/6-28386-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!