Spring Cloud Gateway 的路由和斷言是什么關系?

1. 基本概念

路由是 Spring Cloud Gateway 的基本組成單元。它定義了從客戶端接收到的請求應該被轉發到哪個目標服務。一個完整的路由通常包含以下幾個要素:

  • ID (id):路由的唯一標識符。
  • 目標 URI (uri):請求最終要被轉發到的后端服務地址。
  • 斷言集合 (predicates):一個或多個斷言的集合,用于匹配傳入的請求。
  • 過濾器集合 (filters):一個或多個過濾器集合,用于在請求轉發前后對請求或響應進行修改。

簡單來說,路由就是一條規則,告訴網關:“如果請求滿足某些條件(斷言),就把它發到這個地方(URI),并在發送前后做一些處理(過濾器)。”

斷言就是 判斷傳入的請求是否滿足路由規則中定義的條件。只有當一個路由中的所有斷言都評估為 true 時,該路由才會被匹配成功。

# 路由配置
spring:cloud:gateway:routes:- id: user-service                    # 路由IDuri: http://localhost:8081          # 目標URIpredicates:                         # 斷言集合(匹配條件)- Path=/user/**                     # 路徑斷言- Method=GET                        # 方法斷言- Header=X-Request-Id, \d+          # 請求頭斷言filters:                            # 過濾器集合- StripPrefix=1

2. 工作流程

客戶端請求進入Gateway
獲取所有已配置的路由
遍歷路由列表
是否還有未檢查的路由?
獲取當前路由的斷言集合
返回404 Not Found
當前路由的所有斷言是否匹配?
選擇該路由
應用Pre過濾器
轉發請求到目標服務
目標服務處理并返回響應
應用Post過濾器
返回響應給客戶端

3. 常用斷言類型

Spring Cloud Gateway 提供了許多內置的斷言工廠,可以根據請求的不同屬性進行匹配,

predicates:
# 路徑匹配# Path 斷言:根據請求路徑匹配,例如 /users/**。- Path=/api/user/{id}
# 時間相關# After/Before/Between 斷言:根據請求到達時間匹配。- After=2023-01-01T00:00:00+08:00- Before=2023-12-31T23:59:59+08:00- Between=2023-01-01T00:00:00+08:00,2023-12-31T23:59:59+08:00
# HTTP相關# Method 斷言:根據 HTTP 請求方法匹配,例如 GET, POST。- Method=GET,POST# Header 斷言:根據請求頭信息匹配,例如 Host=example.com。- Header=X-Request-Id, \d+# Query 斷言:根據查詢參數匹配,例如 param=value。- Query=name, jack# Cookie 斷言:根據 Cookie 信息匹配。- Cookie=session, abc
# 網絡相關# Host 斷言:根據請求的主機名匹配。- Host=**.example.com# RemoteAddr 斷言:根據客戶端 IP 地址匹配。- RemoteAddr=192.168.1.0/24

4. 自定義斷言

@Component
public class CustomRoutePredicateFactory extends AbstractRoutePredicateFactory<CustomRoutePredicateFactory.Config> {@Overridepublic Predicate<ServerWebExchange> apply(Config config) {return exchange -> {// 自定義匹配邏輯return exchange.getRequest().getHeaders().getFirst("Custom-Header").equals(config.getValue());};}@Datapublic static class Config {private String value;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88597.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88597.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88597.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

線程屬性設置全攻略

目錄 一、線程屬性的概念 二、線程屬性的核心函數 1. 初始化與銷毀線程屬性對象 2. 常用屬性設置函數 三、線程屬性的設置示例 1. 設置線程為分離狀態 2. 設置線程棧大小 3. 設置線程調度策略和優先級 四、線程屬性的關鍵注意事項 1. 分離狀態&#xff08;Detached S…

蒼穹外賣-day06

蒼穹外賣-day06 課程內容 HttpClient微信小程序開發微信登錄導入商品瀏覽功能代碼 學習目標 能夠使用HttpClient發送HTTP請求并解析響應結果 了解微信小程序開發過程 掌握微信登錄的流程并實現功能代碼 了解商品瀏覽功能需求 功能實現&#xff1a;微信登錄、商品瀏覽 1. H…

安卓定制功能

未解決的定制功能 1.創建自定義分區 2.通過服務啟動應用進程 3.應用白名單 4.網絡白名單 5.應用鎖 6.默認launcher 7.多主頁動態切換 8.禁止狀態欄下拉/鎖屏頁面禁止下拉狀態欄&#xff08;兩種一起&#xff09; 9.導航欄動態打開關閉 10.固件默認是手勢還是導航欄 11.狀態欄動…

【項目】GraphRAG基于知識圖譜的檢索增強技術-實戰入門

GraphRAG—基于知識圖譜的檢索增強技術&#xff08;一&#xff09;GraphRAG入門介紹&#xff08;二&#xff09;GraphRAG基本原理回顧&#xff08;三&#xff09;GraphRAG運行流程3.1 索引&#xff08;Indexing&#xff09;過程3.2 查詢&#xff08;Query&#xff09;過程3.3 P…

Zookeeper添加SASL安全認證 修復方案

#作者&#xff1a;任少近 文章目錄1修復背景2 修復方案說明3 配置流程3.1停止zookeeper服務3.2Zookeeper添加SASL參數3.3配置jaas密碼文件3.4 添加啟動參數3.5啟動zookeeper服務3.6訪問測試4 Kafka連接zookeeper服務端配置4.1未配置身份認證4.2停止kafka服務4.3配置身份認證4.4…

AI進化論07:第二次AI寒冬——AI“改頭換面”,從“AI”變成“機器學習”

書接上回&#xff0c;上回咱們聊了神經網絡在第一次寒冬中的“蟄伏”與“萌動”。但別高興太早&#xff0c;AI很快就迎來了它的第二次“寒冬”&#xff08;大概從20世紀80年代末到90年代中期&#xff09;。這次寒冬啊&#xff0c;比第一次還“冷”&#xff0c;還“漫長”。AI這…

基于開源AI智能名片鏈動2+1模式與S2B2C商城小程序的渠道選擇策略研究

摘要&#xff1a;在數字化商業環境下&#xff0c;品牌與產品的渠道選擇對其市場推廣和運營成功至關重要。本文聚焦于如何依據自身品牌和產品特性&#xff0c;結合開源AI智能名片鏈動21模式與S2B2C商城小程序&#xff0c;運用科學的渠道選擇方法&#xff0c;慎重挑選1 - 2個適宜…

開源 C# .net mvc 開發(八)IIS Express輕量化Web服務器的配置和使用

文章的目的為了記錄.net mvc學習的經歷。本職為嵌入式軟件開發&#xff0c;公司安排開發文件系統&#xff0c;臨時進行學習開發&#xff0c;系統上線3年未出沒有大問題。開發流程和要點有些記憶模糊&#xff0c;趕緊記錄&#xff0c;防止忘記。 相關鏈接: 開源 C# .net mvc 開…

PostgreSQL安裝及簡單應用

下載地址&#xff1a;EDB: Open-Source, Enterprise Postgres Database Management 安裝 注意&#xff1a;端口號默認是5432 配置dbeaver應用&#xff0c;創建數據庫和表 -- 創建模式&#xff08;如果不存在&#xff09; CREATE SCHEMA IF NOT EXISTS bbbase;-- 創建序列&…

wedo智能車庫-----第31節(免費分享圖紙)

夸克網盤&#xff1a;https://pan.quark.cn/s/10302f7bbae0 高清圖紙源文件&#xff0c;需要的請自取

【springboot】IDEA創建SpringBoot簡單工程(有插件)

需求 使用SpringBoot開發一個web應用&#xff0c;瀏覽器發起請求/hello后&#xff0c;給瀏覽器返回字符串 hello world~ 步驟 1.創建Maven工程 2.導入spring-boot-stater-web起步依賴 3.編寫controller 4.提供啟動類 pom.xml文件了解 啟動類 新建包 創建類 package com.zw…

python正則表達式re(Regular Expression)

目錄 正則表達式&#xff1a; match()函數&#xff1a; search()函數&#xff1a; findall()函數&#xff1a; 正則表達式的參數&#xff1a; 表示字符范圍的參數&#xff1a; 表示字符出現的次數的參數&#xff1a; 表示同一類字符的參數&#xff1a; 貪婪和非貪婪模式…

事件驅動設計:Spring監聽器如何像咖啡師一樣優雅處理高并發

架構哲學&#xff1a;當咖啡店面對洶涌客流時&#xff0c;真正的優雅不是更快的動作&#xff0c;而是科學的協作機制。Spring事件驅動正是通過發布-訂閱模式&#xff0c;讓系統像頂級咖啡師般從容應對突發流量。一、從咖啡店看監聽器本質&#xff1a;3大核心組件拆解 場景還原&…

C++ const 關鍵字解析

const 是 C 中用于定義常量或指定不可變性的關鍵字&#xff0c;它在不同上下文中有不同的含義和用法。下面是對 const 的全面解析&#xff1a;1. 基本用法定義常量const int MAX_SIZE 100; const double PI 3.14159;這些值在程序運行期間不能被修改必須在定義時初始化與指針結…

[es自動化更新] Updatecli編排配置.yaml | dockerfilePath值文件.yml

鏈接&#xff1a;https://github.com/elastic/elasticsearch/tree/main/build-conventions elasticsearch自動化更新 本專欄使用updatecli實現自動化版本更新與依賴管理。 其配置通過編排文件&#xff08;updatecli-compose.yaml&#xff09;實現&#xff0c;該文件羅列了稱…

新手向:使用Python將多種圖像格式統一轉換為JPG

本文將詳細解析一個專業的Python腳本&#xff0c;它能夠將指定文件夾中的所有非JPG格式圖像批量轉換為JPG格式。這個腳本雖然代碼量不大&#xff0c;但包含了文件操作、圖像處理、異常處理等多個重要編程概念&#xff0c;非常適合初學者系統學習。環境準備在開始之前&#xff0…

深入剖析C++ RPC框架原理:有棧協程與分布式系統設計

深入剖析C RPC框架原理&#xff1a;有棧協程與分布式系統設計 &#x1f6e0;? 第一部分&#xff1a;RPC框架核心原理與技術架構 &#x1f310; 1.1 RPC在分布式系統中的核心地位 遠程過程調用&#xff08;RPC&#xff09;是現代分布式系統的基石&#xff0c;它實現了&#xf…

基于springboot+Vue的二手物品交易的設計與實現

基于springbootVue的二手物品交易的設計與實現 作者&#xff1a; Mr順 | 某大廠全棧開發工程師 | CSDN新星計劃導師 | Java領域優質創作者 技術棧&#xff1a; SpringBoot, JavaWeb, 數據庫等。精通Java、微信小程序開發。 項目亮點&#xff1a; 完整可運行&#xff1a; 提供…

騰訊云輕量服務器創建快照免費API接口教程

接口簡介 該API用于騰訊云輕量服務器系統盤快照創建&#xff0c;無需關機即可自動刪除舊快照并創建新快照。特點包括&#xff1a; 不占用騰訊云快照配額支持自動備份策略適用于定時備份任務僅支持系統盤快照&#xff08;云硬盤需調用專用接口&#xff09; ?請求地址? https…

C++中的智能指針(1):unique_ptr

一、背景普通指針是指向某塊內存區域地址的變量。如果一個指針指向的是一塊動態分配的內存區域&#xff0c;那么即使這個指針變量離開了所在的作用域&#xff0c;這塊內存區域也不會被自動銷毀。動態分配的內存不進行釋放則會導致內存泄漏。如果一個指針指向的是一塊已經被釋放…