本文基於Spring 5.0+前端
項目某些頁面是經過後臺映射的,匹配映射路徑時,有那種路徑參數匹配。其中一個定義好的路徑匹配是:web
/{corporationName}_{vendorName}/{shopName}_with_{retailer_name}?g={goodsId}
當時沒有仔細看,其實{goodsId}
也應該做爲路徑參數,多是前端想要拿到這個id,放在url參數的位置比較容易拿到,因此就放在這個位置。spring
想驗證下這樣自由的url是否能匹配成功,看了下spring-webmvc
和spring-core
的源碼,找到url匹配核心類PathMatcher
,目前仍是隻有古老的AntPathMatcher
這一種實現。mvc
咱們來試下,是否能匹配成功:app
new AntPathMatcher().match("/{corporationName}_{vendorName}/{shopName}_with_{retailer_name}?g={goodsId}","/corporation 1 _ vendor 2/shop 1_with_retailer 2?g=good1")
這個返回是true
url
看來能夠匹配,實裝後,發現訪問路徑返回404.查看源碼,發現HttpRequest的url裏面是不帶url參數的,誒呀,把這個給忘了,修改爲 @RequestMapping("/{corporationName}_{vendorName}/{shopName}_with_{retailer_name}")
以後,成功設計
可是,仍是在設計的時候,把goodId設置在路徑上面,比較好。雖然前端可能會麻煩一點兒code