Spring端点匹配器使用**不符合预期的原因咨询
问题原因解析
这是Spring MVC采用的Ant风格路径匹配规则导致的差异,核心在于**的位置和作用范围:
当配置
path = "/v3**"时:**直接跟在v3后面(无斜杠分隔),它的作用是匹配当前单个路径段内的任意字符,只能覆盖同一个斜杠之间的内容。比如/v3asdasd是完整的单个路径段(从/到下一个/之间的部分),符合/v3开头的单个路径段规则,所以能匹配;但/v3asdasd/asd包含两个路径段(v3asdasd和asd),**无法跨越斜杠匹配第二个路径段,因此请求匹配失败。当改成
path = "/v3/**"时:
这里的/**是斜杠加通配符,**的作用变成匹配任意数量的后续路径段(包括0个),可以覆盖所有层级的子路径。不管后面跟着多少个斜杠分隔的路径段,比如/v3asdasd、/v3asdasd/asd、/v3/foo/bar/baz,都能被这个规则匹配到。
简单总结:
xxx**:匹配以xxx开头的单个路径段xxx/**:匹配以xxx开头的所有层级路径
内容的提问来源于stack exchange,提问作者Pitto
相关产品推荐
相关产品推荐

