Menu
快讀
  • 旅遊
  • 生活
    • 美食
    • 寵物
    • 養生
    • 親子
  • 娛樂
    • 動漫
  • 時尚
  • 社會
  • 探索
  • 故事
  • 科技
  • 軍事
  • 国际
快讀

深入淺出Spring 5,探索 WebFlux URL匹配

2020 年 1 月 6 日 Java从入门到架构师

1.概述

Spring 5帶來 PathPatternParser,用于解析URI模板模式。這是以前使用的AntPathMatcher的替代方法。

該AntPathMatcher是Ant風格的路徑模式匹配的實現。PathPatternParser將路徑分成PathElements的鏈接列表。這一鏈條PathElements采取的是PathPattern的模式快速匹配的類。

使用PathPatternParser,還引入了對新URI變量語法的支持。

在本文中,我們將介紹Spring 5.0 WebFlux中引入的新/更新的URL模式匹配器,以及自Spring的較早版本以來一直使用的URL模式匹配器。

深入淺出Spring 5,探索 WebFlux URL匹配

2. Spring 5.0中的新URL模式匹配器

Spring 5.0發行版添加了一個非常易于使用的URI變量語法:{* foo},以在模式末尾捕獲任意數量的路徑段。

2.1 使用處理程序方法的URI變量語法{* foo}

我們來看一個URI變量模式{* foo}的示例,另一個使用@GetMapping和處理程序方法的示例。無論我們在" / spring5"之後的路徑中輸入什麽,都將存儲在路徑變量" id"中:

2.2 使用RouterFunction的 URI變量語法{* foo}

深入淺出Spring 5,探索 WebFlux URL匹配

讓我們來看一個使用RouterFunction的新URI變量路徑模式的示例:

在這種情況下,我們在" / test"之後編寫的任何路徑都將被捕獲在路徑變量" id"中。因此,測試用例可能是:

2.3 使用URI變量語法{* foo}來訪問資源

如果要訪問資源,則需要編寫與上一個示例中類似的路徑模式。

假設我們的模式是:" / files / {* filepaths}"。在這種情況下,如果路徑爲/files/hello.txt,則路徑變量" filepaths"的值爲" /hello.txt",而如果路徑爲/files/test/test.txt,則路徑值爲" filepaths" =" /test/test.txt"。

我們的路由功能,用于訪問/ files /目錄下的文件資源:

假設我們的文本文件hello.txt和test.txt分別包含" hello"和" test"。這可以通過JUnit測試用例進行演示:

3.先前版本中的現有URL模式

深入淺出Spring 5,探索 WebFlux URL匹配

現在,讓我們看一下較早版本的Spring支持的所有其他URL模式匹配器。所有這些模式都可以通過@GetMapping與RouterFunction和Handler方法一起使用。

3.1 '?' 完全匹配一個字符

如果我們將路徑模式指定爲:" / t?st ",這將匹配以下路徑:" / test"和" / tast",但不匹配" / tst"和" / teest"。

使用RouterFunction及其JUnit測試用例的示例代碼:

3.2 '*'匹配路徑段中的0個或更多字符

如果我們將路徑模式指定爲:" / baeldung / * Id",則將匹配以下路徑模式:" / baeldung / Id"," / baeldung / tutorialId", " / baeldung / articleId"等:

3.3 '**'匹配0個或更多路徑段,直到路徑結束

在這種情況下,模式匹配不限于單個路徑段。如果我們將模式指定爲" / resources / **",它將使所有路徑與" / resources /"之後的任意數量的路徑段匹配:

3.4 路徑變量中的'{baeldung:[az] +}'正則表達式

我們還可以爲path變量的值指定一個正則表達式。因此,如果我們的模式類似于" / {baeldung:[az] +}",則路徑變量" baeldung"的值將是與給定正則表達式匹配的任何路徑段:

3.5 '/ {var1} _ {var2}'同一路徑段中的多個路徑變量

Spring 5確保只有在由定界符分隔時,才允許在單個路徑段中使用多個路徑變量。只有這樣,Spring才能區分兩個不同的路徑變量:

4 結論

在本文中,我們介紹了Spring 5中的新URL匹配器以及Spring早期版本中可用的URL匹配器。

相關文章:

  • 新加坡11條shuttle bus路線!直達動物園、宜家、農場、聖淘沙、醫院……
  • 打完疫苗後如何從新加坡順利回國?新加坡最新回國政策及流程指南
  • 「新相親大會」獅城招募正式啓動!想脫單,你就來!
  • 新加坡辦理美簽攻略:全是幹貨,曲線赴美請收下!
  • 春節出行不用擠,新加坡打車立減5元!先到先得喲!
  • 小六會考告一段落,一份新加坡中學分類清單助家長挑選好學校
科技

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

©2025 快讀 | 服務協議 | DMCA | 聯繫我們