歡迎光臨
每天分享高質量文章

Spring Boot:定製URL匹配規則

構建web應用程式時,並不是所有的URL請求都遵循預設的規則。有時,我們希望RESTful URL匹配的時候包含定界符“.”,這種情況在Spring中可以稱之為“定界符定義的格式”;有時,我們希望識別斜槓的存在。Spring提供了介面供開發人員按照需求定製。

在之前的幾篇文章中,可以透過WebConfiguration類來定製程式中的過濾器、格式化工具等等,同樣得,也可以在這個類中用類似的辦法配置“路徑匹配規則”。

假設ISBN格式允許透過定界符“.”分割圖書編號和修訂號,形如[isbn-number].[revision]

How Do

  • 在WebConfiguration類中新增對應的配置,程式碼如下:

  1. @Overridepublic

  2. void configurePathMatch(PathMatchConfigurer configurer) {

  3.    configurer.setUseSuffixPatternMatch(false).

  4.            setUseTrailingSlashMatch(true);

  5. }

  • 透過 mvn spring-boot:run啟動應用程式

  • 訪問 http://localhost:8080/books/9781-1234-1111.1

  • 訪問 http://localhost:8080/books/9781-1234-1111

分析

configurePathMatch(PathMatchConfigurer configurer)函式讓開發人員可以根據需求定製URL路徑的匹配規則。

  • configurer.setUseSuffixPatternMatch(false)表示設計人員希望系統對外暴露的URL不會識別和匹配.*字尾。在這個例子中,就意味著Spring會將9781-1234-1111.1當做一個{isbn}引數傳給BookController。

  • configurer.setUseTrailingSlashMatch(true)表示系統不區分URL的最後一個字元是否是斜槓/。在這個例子中,就意味著 http://localhost:8080/books/9781-1234-1111和 http://localhost:8080/books/9781-1234-1111/含義相同。

如果需要定製path匹配發生的過程,可以提供自己定製的PathMatcherUrlPathHelper,但是這種需求並不常見。

贊(0)

分享創造快樂