構(gòu)建web應(yīng)用程序時(shí),并不是所有的URL請(qǐng)求都遵循默認(rèn)的規(guī)則。有時(shí),我們希望RESTful URL匹配的時(shí)候包含定界符“.”,這種情況在Spring中可以稱之為“定界符定義的格式”;有時(shí),我們希望識(shí)別斜杠的存在。Spring提供了接口供開發(fā)人員按照需求定制。
在之前的幾篇文章中,可以通過WebConfiguration類來定制程序中的過濾器、格式化工具等等,同樣得,也可以在這個(gè)類中用類似的辦法配置“路徑匹配規(guī)則”。
假設(shè)ISBN格式允許通過定界符“.”分割圖書編號(hào)和修訂號(hào),形如[isbn-number].[revision]
@Overridepublic
void configurePathMatch(PathMatchConfigurer configurer) {
configurer.setUseSuffixPatternMatch(false).
setUseTrailingSlashMatch(true);
}
mvn spring-boot:run
啟動(dòng)應(yīng)用程序http://localhost:8080/books/9781-1234-1111.1
http://wiki.jikexueyuan.com/project/spring-boot-cookbook-zh/images/9.png" alt="在路徑匹配時(shí),不使用后綴模式匹配(.*)" />
http://localhost:8080/books/9781-1234-1111
http://wiki.jikexueyuan.com/project/spring-boot-cookbook-zh/images/a.png" alt="使用正確的URL訪問的結(jié)果" />
configurePathMatch(PathMatchConfigurer configurer)函數(shù)讓開發(fā)人員可以根據(jù)需求定制URL路徑的匹配規(guī)則。
http://localhost:8080/books/9781-1234-1111
和http://localhost:8080/books/9781-1234-1111/
含義相同。如果需要定制path匹配發(fā)生的過程,可以提供自己定制的PathMatcher和UrlPathHelper,但是這種需求并不常見。