Spring RequestMapping检测路径匹配核心类AntPathMatcher

本文基于Spring 5.0+

项目某些页面是通过后台映射的,匹配映射路径时,有那种路径参数匹配。其中一个定义好的路径匹配是:

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

当时没有仔细看,其实{goodsId}也应该作为路径参数,可能是前端想要拿到这个id,放在url参数的位置比较容易拿到,所以就放在这个位置。

想验证下这样自由的url是否能匹配成功,看了下spring-webmvcspring-core的源码,找到url匹配核心类PathMatcher,目前还是只有古老的AntPathMatcher这一种实现。

我们来试下,是否能匹配成功:

new AntPathMatcher().match("/{corporationName}_{vendorName}/{shopName}_with_{retailer_name}?g={goodsId}","/corporation 1 _ vendor 2/shop 1_with_retailer 2?g=good1")

这个返回是true

看来可以匹配,实装后,发现访问路径返回404.查看源码,发现HttpRequest的url里面是不带url参数的,诶呀,把这个给忘了,修改成
@RequestMapping("/{corporationName}_{vendorName}/{shopName}_with_{retailer_name}")之后,成功

但是,还是在设计的时候,把goodId设置在路径上面,比较好。虽然前端可能会麻烦一点儿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值