SpringCloud Gateway--Predicate/断言(详细介绍)中
😀前言
本篇博文是关于SpringCloud Gateway–Predicate/断言(详细介绍)中,希望你能够喜欢
🏠个人主页:晨犀主页
🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊
文章目录
- SpringCloud Gateway
- Cookie Route Predicate
- 需求分析/图解
- 代码实现
- 测试
- Header Route Predicate
- 需求分析/图解
- 代码实现
- 测试
- Host Route Predicate
- 需求分析/图解
- 代码实现
- 测试
SpringCloud Gateway
Cookie Route Predicate
需求分析/图解
- 需求: 请求带有cookie 键: user 值: abc才匹配/断言成功
代码实现
- 参考文档:
https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#gateway-request-predicates-factories

解读:chocolate 是cookie 名字ch.p 是cookie 的值,是按照正则表达式来匹配的
2. 修改e-commerce-gateway-20000 的application.yml
routes: #配置路由,可以配置多个路由 List<RouteDefinition> routes- id: member_route01 #路由的id, 程序员自己配置,要求唯一#gateway 最终访问的url 是 url=uri+Path#匹配后提供服务的路由地址: 也可以是外网 http://www.baidu.com#比如: 客户端/浏览器请求 url http://localhost:20000/member/get/1#如果根据Path匹配成功 最终访问的url/转发url 就是 url=http://localhost:10000/member/get/1#如果匹配失败, 则有gateway返回404信息#疑问: 这里配置的 uri 是固定,在当前这种情况其实可以没有有Eureka Server,后面会使用灵活方式# 配置,就会使用到Eureka Server#uri: http://localhost:10000#解读#1. lb: 协议名 , member-service-provider 注册到eureka server 服务名(小写)#2. 默认情况下,负载均衡算法是轮询uri: lb://member-service-providerpredicates: #断言,可以有多种形式- Path=/member/get/**- Cookie=user, abc- id: member_route02 #路由的id, 程序员自己配置,要求唯一#uri: http://localhost:10000uri: lb://member-service-providerpredicates: #断言,可以有多种形式#这时如果客户端/浏览器 访问gateway 的url http://localhost:20000/member/save#匹配Path成功 最终访问的url 就是 http://localhost:10000/member/save- Path=/member/save
测试
启动e-commerce-eureka-server-9001
启动member-service-provider-10000/10002
启动e-commerce-gateway-20000
Postman 测试
输入: http://localhost:20000/member/get/1

Header Route Predicate
需求分析/图解
- 需求: 请求头Header 有X-Request-Id, 并且值hello 才匹配/断言成功
代码实现
- 参考文档:
https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#gateway-request-predicates-factories

解读: X-Request-Id 是header 的名称, \d+ 是一个正则表达式
- 修改e-commerce-gateway-20000 的application.yml
routes: #配置路由,可以配置多个路由 List<RouteDefinition> routes- id: member_route01 #路由的id, 程序员自己配置,要求唯一#gateway 最终访问的url 是 url=uri+Path#匹配后提供服务的路由地址: 也可以是外网 http://www.baidu.com#比如: 客户端/浏览器请求 url http://localhost:20000/member/get/1#如果根据Path匹配成功 最终访问的url/转发url 就是 url=http://localhost:10000/member/get/1#如果匹配失败, 则有gateway返回404信息#疑问: 这里配置的 uri 是固定,在当前这种情况其实可以没有有Eureka Server,后面会使用灵活方式# 配置,就会使用到Eureka Server#uri: http://localhost:10000#解读#1. lb: 协议名 , member-service-provider 注册到eureka server 服务名(小写)#2. 默认情况下,负载均衡算法是轮询uri: lb://member-service-providerpredicates: #断言,可以有多种形式- Path=/member/get/**- Header=X-Request-Id, hello- id: member_route02 #路由的id, 程序员自己配置,要求唯一#uri: http://localhost:10000uri: lb://member-service-providerpredicates: #断言,可以有多种形式#这时如果客户端/浏览器 访问gateway 的url http://localhost:20000/member/save#匹配Path成功 最终访问的url 就是 http://localhost:10000/member/save- Path=/member/save
测试
启动e-commerce-eureka-server-9001
启动member-service-provider-10000/10002
启动e-commerce-gateway-20000
Postman 测试
输入: http://localhost:20000/member/get/1

Host Route Predicate
需求分析/图解
- 需求: 请求Host 是**.my.** 才匹配/断言成功, 比如Host www.my.com
代码实现
- 参考文档:
https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#gateway-request-predicates-factories

解读: Host 可以有多个, 使用逗号间隔
- 修改e-commerce-gateway-20000 的application.yml
routes: #配置路由,可以配置多个路由 List<RouteDefinition> routes- id: member_route01 #路由的id, 程序员自己配置,要求唯一#gateway 最终访问的url 是 url=uri+Path#匹配后提供服务的路由地址: 也可以是外网 http://www.baidu.com#比如: 客户端/浏览器请求 url http://localhost:20000/member/get/1#如果根据Path匹配成功 最终访问的url/转发url 就是 url=http://localhost:10000/member/get/1#如果匹配失败, 则有gateway返回404信息#疑问: 这里配置的 uri 是固定,在当前这种情况其实可以没有有Eureka Server,后面会使用灵活方式# 配置,就会使用到Eureka Server#uri: http://localhost:10000#解读#1. lb: 协议名 , member-service-provider 注册到eureka server 服务名(小写)#2. 默认情况下,负载均衡算法是轮询uri: lb://member-service-providerpredicates: #断言,可以有多种形式- Path=/member/get/**- Host=**.hhh.**- id: member_route02 #路由的id, 程序员自己配置,要求唯一#uri: http://localhost:10000uri: lb://member-service-providerpredicates: #断言,可以有多种形式#这时如果客户端/浏览器 访问gateway 的url http://localhost:20000/member/save#匹配Path成功 最终访问的url 就是 http://localhost:10000/member/save- Path=/member/save
测试
启动e-commerce-eureka-server-9001
启动member-service-provider-10000/10002
启动e-commerce-gateway-20000
Postman 测试
输入: http://localhost:20000/member/get/1

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞
相关文章:
SpringCloud Gateway--Predicate/断言(详细介绍)中
😀前言 本篇博文是关于SpringCloud Gateway–Predicate/断言(详细介绍)中,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以…...
Linux内核启动流程-第一阶段汇编流程简介
一. Linux启动流程 看完 Linux 内核的顶层 Makefile 以后再来看 Linux 内核的大致启动流程, Linux 内核的启 动流程要比 uboot 复杂的多,涉及到的内容也更多。 本文中,我们就大致的了解一下 Linux 内 核的启动流程。 要分析 Li…...
SpringBoot-Druid
目录 1.什么是Druid 2.主要优点和原因 3.误区 4.Part代码 0.pom 1.Spring.datasource.type: com.alibaba.druid.pool.DruidDataSource 2.Druid用Jasypt加密任意内容 EnableEncryptableProperties开启加密注解 3.Druid监控平台 1.什么是Druid Druid 是一个开源的数据库…...
PAT甲级真题1006:签到与签出
🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…...
【架构篇】Supabase架构和功能介绍
Supabase是什么 Supabase将自己定位为Firebase的开源替代品,提供了一套工具来帮助开发者构建web或移动应用程序。Supabase是建立在Postgres之上的,Postgres是一个免费的开源数据库,被认为是世界上最稳定、最先进的数据库之一。Supabase对标F…...
Github主页无法打开和Assets转圈
1、cmd启动命令行 2、github.com打不开,多刷新几遍。等成功打开时,命令行输入nslookup github.com,把非权威应答下的IP地址复制到C:\Windows\System32\drivers\etc\hosts里,如查到的IP是192.30.255.112,则填写 192.30.255.112 gi…...
rm误删文件恢复
rm误删文件恢复 问题描述安装extundeleteyum安装extundelete编译安装extundelete 常用参数动作(action): 尝试数据恢复前置条件卸载磁盘分区查看被删除数据信息 恢复文件恢复指定inode号文件恢复指定文件名恢复指定目录恢复所有可恢复文件恢复指定时间的文件恢复指定…...
爬虫 — 多线程
目录 一、多任务概念二、实现多任务方式1、多进程 (Multiprocessing)2、多线程(Multithreading)3、协程(Coroutine) 三、多线程执行顺序四、多线程的方法1、join()2、setDaemon()3、threading.enumerate() …...
Cython 笔记 (Python/Jython)
目录 1. Cython 笔记 (Python)2. python 加速库 cython 简介2.1. Cython 是什么?2.2. 如何安装 Cython?2.3. 简单示例2.4. 性能比对2.5. 总结 3. PYTHON, CYTHON, JYTHON, IRONPYTHON 的区别 (注意: 此篇有误导,表述不一定正确,只提供一个方向)3.1. PY…...
[React] react-hooks如何使用
react-hooks思想和初衷,也是把组件,颗粒化,单元化,形成独立的渲染环境,减少渲染次数,优化性能。 文章目录 1.为什么要使用hooks2.如何使用hooks2.1 useState2.2 useEffect2.3 useLayoutEffect2.4 useRef2.5…...
多个pdf合并成一个文件,3个方法合并pdf
如何把多个pdf合并成一个文件?在我们日常的工作中,经常会遇到一些需要处理的文件,其中包括PDF文件。特别是当我们需要将多个PDF文件合并成一个PDF文件时,会面临一些困难。这样的情况下,我们的阅读能力会受到限制&#…...
代码随想录 动态规划Ⅸ
198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个…...
【数据结构】散列表(哈希表)的学习知识总结
目录 1、散列表 2、散列函数 2.1 定义 2.2 散列函数的构造 2.2.1 除留余数法 2.2.2 直接定址法 2.2.3 数字分析法 2.2.4 平方取中法 3、冲突(碰撞) 4、处理冲突的方法 4.1 拉链法(链接法) 4.2 开放定址法 5、C语言…...
2023智慧云打印小程序源码多店铺开源版 +前端
智慧自助云打印系统/智慧云打印小程序源码 前端 这是一款全新的基于Thinkphp的最新自助打印系统,最新UI界面设计的云打印小程序源码...
利用亚马逊 云服务器 EC2 和S3免费套餐搭建私人网盘
网盘是一种在线存储服务,提供文件存储,访问,备份,贡献等功能,是我们日常中不可或缺的一种服务。很多互联网公司都为个人和企业提供免费的网盘服务。但这些免费服务都有一些限制,比如限制下载速度࿰…...
数据分析技能点-数据的种类
在日常生活中,数据无处不在。当你去超市购物时,你可能会注意到商品的价格、重量、口味等;当你在社交媒体上浏览时,你可能会注意到好友的点赞数、评论等。这些都是数据的一种形式,而了解这些数据的种类和特点有助于我们更好地理解和使用它们。 数据的基本分类 数据大致可…...
解读:ISO 14644-21:2023《洁净室及相关受控环境:悬浮粒子采样》发布指导粒子采样!
药品洁净实验室环境监测结果是否满足微生物检测需求,直接决定检测结果的有效性准确性,进行药品微生物检测,必须对实验环境进行日常和定期监测,其内容包括非生物活性的空气悬浮粒子数及有生物活性的微生物监测。 悬浮粒子监测是保证…...
Java --- MySQL8之索引优化与查询优化
目录 一、索引失效场景 1.1、全值匹配 1.2、最佳左前缀规则 1.3、主键插入顺序 1.4、计算、函数、类型转换(自动或手动)导致索引失效 1.5、类型转换导致索引失效 1.6、范围条件右边的列索引失效 1.7、不等于(! 或者<>)索引失效 1.8、is null可以使用索引&…...
澳大利亚新版《2023年消费品(36个月以下儿童玩具) 安全标准》发布 旨在降低危险小零件的伤害
2023年9月4日,澳大利亚政府发布了新的儿童玩具强制性安全标准《2023年消费品(36个月以下儿童玩具)安全标准》(Consumer Goods (Toys for Children up to and including 36 Months of Age) Safety Standard 2023)。该强制性标准旨在尽可能地降…...
表格内日期比较计算
需求:在表格中新增数据,计算开始日期中最早的和结束日期中最晚的,回显到下方。 <el-formref"formRef":model"ruleForm":rules"rules"style"margin-top: 20px;"label-position"top">…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
