Spring RequestMapping檢測路徑匹配核心類AntPathMatcher

本文基於Spring 5.0+前端

項目某些頁面是經過後臺映射的,匹配映射路徑時,有那種路徑參數匹配。其中一個定義好的路徑匹配是:web

/{corporationName}_{vendorName}/{shopName}_with_{retailer_name}?g={goodsId}

當時沒有仔細看,其實{goodsId}也應該做爲路徑參數,多是前端想要拿到這個id,放在url參數的位置比較容易拿到,因此就放在這個位置。spring

想驗證下這樣自由的url是否能匹配成功,看了下spring-webmvcspring-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")

這個返回是trueurl

看來能夠匹配,實裝後,發現訪問路徑返回404.查看源碼,發現HttpRequest的url裏面是不帶url參數的,誒呀,把這個給忘了,修改爲 @RequestMapping("/{corporationName}_{vendorName}/{shopName}_with_{retailer_name}")以後,成功設計

可是,仍是在設計的時候,把goodId設置在路徑上面,比較好。雖然前端可能會麻煩一點兒code

相關文章
相關標籤/搜索