Spring Boot實戰之定製URL匹配規則

本文首發於我的網站:Spring Boot實戰之定製URL匹配規則java

構建web應用程序時,並非全部的URL請求都遵循默認的規則。有時,咱們但願RESTful URL匹配的時候包含定界符「.」,這種狀況在Spring中能夠稱之爲「定界符定義的格式」;有時,咱們但願識別斜槓的存在。Spring提供了接口供開發人員按照需求定製。web

在以前的幾篇文章中,能夠經過WebConfiguration類來定製程序中的過濾器、格式化工具等等,一樣得,也能夠在這個類中用相似的辦法配置「路徑匹配規則」。面試

假設ISBN格式容許經過定界符「.」分割圖書編號和修訂號,形如[isbn-number].[revision]spring

實戰

  • 在WebConfiguration類中添加對應的配置,代碼以下:
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
    configurer.setUseSuffixPatternMatch(false).setUseTrailingSlashMatch(true);
}
  • 經過mvn spring-boot:run啓動應用程序
  • 訪問http://localhost:8080/books/9781-1234-1111.1

在路徑匹配時,不使用後綴模式匹配(.*)

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

使用正確的URL訪問的結果

分析

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-1111http://localhost:8080/books/9781-1234-1111/含義相同。

若是須要定製path匹配發生的過程,能夠提供本身定製的PathMatcherUrlPathHelper,可是這種需求並不常見。框架

Spring Boot 1.x系列

  1. Spring Boot的自動配置、Command-line-Runner
  2. 瞭解Spring Boot的自動配置
  3. Spring Boot的@PropertySource註解在整合Redis中的使用
  4. Spring Boot項目中如何定製HTTP消息轉換器
  5. Spring Boot整合Mongodb提供Restful接口
  6. Spring中bean的scope
  7. Spring Boot項目中使用事件派發器模式
  8. Spring Boot提供RESTful接口時的錯誤處理實踐
  9. Spring Boot實戰之定製本身的starter
  10. Spring Boot項目如何同時支持HTTP和HTTPS協議
  11. 自定義的Spring Boot starter如何設置自動配置註解
  12. Spring Boot項目中使用Mockito
  13. 在Spring Boot項目中使用Spock測試框架
  14. Spring Boot項目中如何定製攔截器
  15. Spring Boot項目中如何定製PropertyEditors
  16. Spring Boot構建的Web項目如何在服務端校驗表單輸入
  17. Spring Boot應用的健康監控
  18. Spring Boot項目中如何定製servlet-filters

本號專一於後端技術、JVM問題排查和優化、Java面試題、我的成長和自我管理等主題,爲讀者提供一線開發者的工做和成長經驗,期待你能在這裏有所收穫。
javaaduide

相關文章
相關標籤/搜索