当前位置: 首页 > news >正文

SpringCloud Gateway--Predicate/断言(详细介绍)中

😀前言
本篇博文是关于SpringCloud Gateway–Predicate/断言(详细介绍)中,希望你能够喜欢

🏠个人主页:晨犀主页
🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊

文章目录

  • SpringCloud Gateway
    • Cookie Route Predicate
      • 需求分析/图解
      • 代码实现
      • 测试
    • Header Route Predicate
      • 需求分析/图解
      • 代码实现
      • 测试
    • Host Route Predicate
      • 需求分析/图解
      • 代码实现
      • 测试

SpringCloud Gateway

Cookie Route Predicate

需求分析/图解

  1. 需求: 请求带有cookie 键: user 值: abc才匹配/断言成功

代码实现

  1. 参考文档:
    https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#gateway-request-predicates-factories

image-20230828172109188

解读: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

image-20230828172258966

Header Route Predicate

需求分析/图解

  1. 需求: 请求头Header 有X-Request-Id, 并且值hello 才匹配/断言成功

代码实现

  1. 参考文档:
    https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#gateway-request-predicates-factories

image-20230828172346764

解读: X-Request-Id 是header 的名称, \d+ 是一个正则表达式

  1. 修改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

image-20230828172513473

Host Route Predicate

需求分析/图解

  1. 需求: 请求Host 是**.my.** 才匹配/断言成功, 比如Host www.my.com

代码实现

  1. 参考文档:
    https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#gateway-request-predicates-factories

image-20230828172616211

解读: Host 可以有多个, 使用逗号间隔

  1. 修改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

image-20230828173031324

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

相关文章:

SpringCloud Gateway--Predicate/断言(详细介绍)中

&#x1f600;前言 本篇博文是关于SpringCloud Gateway–Predicate/断言&#xff08;详细介绍&#xff09;中&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以…...

Linux内核启动流程-第一阶段汇编流程简介

一. Linux启动流程 看完 Linux 内核的顶层 Makefile 以后再来看 Linux 内核的大致启动流程&#xff0c; Linux 内核的启 动流程要比 uboot 复杂的多&#xff0c;涉及到的内容也更多。 本文中&#xff0c;我们就大致的了解一下 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:签到与签出

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…...

【架构篇】Supabase架构和功能介绍

Supabase是什么 Supabase将自己定位为Firebase的开源替代品&#xff0c;提供了一套工具来帮助开发者构建web或移动应用程序。Supabase是建立在Postgres之上的&#xff0c;Postgres是一个免费的开源数据库&#xff0c;被认为是世界上最稳定、最先进的数据库之一。Supabase对标F…...

Github主页无法打开和Assets转圈

1、cmd启动命令行 2、github.com打不开&#xff0c;多刷新几遍。等成功打开时&#xff0c;命令行输入nslookup github.com,把非权威应答下的IP地址复制到C:\Windows\System32\drivers\etc\hosts里&#xff0c;如查到的IP是192.30.255.112&#xff0c;则填写 192.30.255.112 gi…...

rm误删文件恢复

rm误删文件恢复 问题描述安装extundeleteyum安装extundelete编译安装extundelete 常用参数动作(action)&#xff1a; 尝试数据恢复前置条件卸载磁盘分区查看被删除数据信息 恢复文件恢复指定inode号文件恢复指定文件名恢复指定目录恢复所有可恢复文件恢复指定时间的文件恢复指定…...

爬虫 — 多线程

目录 一、多任务概念二、实现多任务方式1、多进程 &#xff08;Multiprocessing&#xff09;2、多线程&#xff08;Multithreading&#xff09;3、协程&#xff08;Coroutine&#xff09; 三、多线程执行顺序四、多线程的方法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 的区别 (注意: 此篇有误导&#xff0c;表述不一定正确&#xff0c;只提供一个方向)3.1. PY…...

[React] react-hooks如何使用

react-hooks思想和初衷&#xff0c;也是把组件&#xff0c;颗粒化&#xff0c;单元化&#xff0c;形成独立的渲染环境&#xff0c;减少渲染次数&#xff0c;优化性能。 文章目录 1.为什么要使用hooks2.如何使用hooks2.1 useState2.2 useEffect2.3 useLayoutEffect2.4 useRef2.5…...

多个pdf合并成一个文件,3个方法合并pdf

如何把多个pdf合并成一个文件&#xff1f;在我们日常的工作中&#xff0c;经常会遇到一些需要处理的文件&#xff0c;其中包括PDF文件。特别是当我们需要将多个PDF文件合并成一个PDF文件时&#xff0c;会面临一些困难。这样的情况下&#xff0c;我们的阅读能力会受到限制&#…...

代码随想录 动态规划Ⅸ

198. 打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个…...

【数据结构】散列表(哈希表)的学习知识总结

目录 1、散列表 2、散列函数 2.1 定义 2.2 散列函数的构造 2.2.1 除留余数法 2.2.2 直接定址法 2.2.3 数字分析法 2.2.4 平方取中法 3、冲突&#xff08;碰撞&#xff09; 4、处理冲突的方法 4.1 拉链法&#xff08;链接法&#xff09; 4.2 开放定址法 5、C语言…...

2023智慧云打印小程序源码多店铺开源版 +前端

智慧自助云打印系统/智慧云打印小程序源码 前端 这是一款全新的基于Thinkphp的最新自助打印系统&#xff0c;最新UI界面设计的云打印小程序源码...

利用亚马逊 云服务器 EC2 和S3免费套餐搭建私人网盘

网盘是一种在线存储服务&#xff0c;提供文件存储&#xff0c;访问&#xff0c;备份&#xff0c;贡献等功能&#xff0c;是我们日常中不可或缺的一种服务。很多互联网公司都为个人和企业提供免费的网盘服务。但这些免费服务都有一些限制&#xff0c;比如限制下载速度&#xff0…...

数据分析技能点-数据的种类

在日常生活中,数据无处不在。当你去超市购物时,你可能会注意到商品的价格、重量、口味等;当你在社交媒体上浏览时,你可能会注意到好友的点赞数、评论等。这些都是数据的一种形式,而了解这些数据的种类和特点有助于我们更好地理解和使用它们。 数据的基本分类 数据大致可…...

解读:ISO 14644-21:2023《洁净室及相关受控环境:悬浮粒子采样》发布指导粒子采样!

药品洁净实验室环境监测结果是否满足微生物检测需求&#xff0c;直接决定检测结果的有效性准确性&#xff0c;进行药品微生物检测&#xff0c;必须对实验环境进行日常和定期监测&#xff0c;其内容包括非生物活性的空气悬浮粒子数及有生物活性的微生物监测。 悬浮粒子监测是保证…...

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日&#xff0c;澳大利亚政府发布了新的儿童玩具强制性安全标准《2023年消费品(36个月以下儿童玩具)安全标准》&#xff08;Consumer Goods (Toys for Children up to and including 36 Months of Age) Safety Standard 2023&#xff09;。该强制性标准旨在尽可能地降…...

表格内日期比较计算

需求&#xff1a;在表格中新增数据&#xff0c;计算开始日期中最早的和结束日期中最晚的&#xff0c;回显到下方。 <el-formref"formRef":model"ruleForm":rules"rules"style"margin-top: 20px;"label-position"top">…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...