uri匹配
AntPathMatcher 是 Spring 框架提供的一个用于路径匹配的工具类,主要用于匹配 URL 路径。在 Spring 中,AntPathMatcher 被广泛用于 URL 路径的模式匹配,如 Spring Security、Spring MVC 等。
AntPathMatcher 的 match() 方法遵循一定的匹配规则,它支持通配符(wildcards)来匹配路径。下面是 AntPathMatcher.match() 方法的匹配规则和相关示例。
1. *:匹配路径中的一个部分
-
*匹配 URL 中的一个路径部分(以/为分隔符),即一个单词或一段路径(不包含/)。 -
示例:
/backend/*可以匹配/backend/login、/backend/logout,但不能匹配/backend/page/login。/backend/*/login可以匹配/backend/page/login、/backend/user/login,但是不能匹配/backend/login。
2. **:匹配多层路径
-
**匹配零个或多个路径部分,适用于路径的任意深度。它可以匹配路径中的任意层级。 -
**可以放在路径的两端或中间。 -
示例:
/backend/**可以匹配/backend/login、/backend/page/login、/backend/page/other/login等任意深度的路径。/backend/**/login可以匹配/backend/page/login、/backend/user/login、/backend/page/other/login等路径。/backend/**/login/**可以匹配/backend/page/login/abc、/backend/page/other/login/abc/xyz等路径。
3. ?:匹配一个字符
-
?用于匹配路径中的一个字符,表示任意单个字符(但不能是路径分隔符/)。 -
示例:
/backend/??/login可以匹配/backend/xx/login、/backend/ab/login,但是不能匹配/backend/xxx/login。
4. 普通字符:
-
普通字符(如字母、数字、下划线等)会精确匹配相应的字符。
-
示例:
/backend/login会精确匹配/backend/login,不会匹配其他路径。
5. 路径分隔符 /
/是路径的分隔符,路径模式中的/必须严格匹配对应的路径分隔符。- 路径中的
/表示层级的划分,通常一个路径段由/连接多个部分。
6. 通配符的组合
*和**可以组合使用以适应更复杂的匹配需求。例如,/backend/*/user/**可以匹配/backend/page/user/login、/backend/other/user/profile等路径。
匹配规则总结
*:匹配一个路径部分(不含/)。**:匹配任意层级的路径。?:匹配单个字符。- 普通字符:精确匹配路径字符。
具体示例
"/backend/**":匹配任何以/backend/开头的路径,包括/backend/login、/backend/page/login、/backend/page/other/login。"/backend/*/login":匹配/backend/xx/login、/backend/ab/login,但不能匹配/backend/page/login。"/backend/**/login":匹配/backend/page/login、/backend/user/login、/backend/page/other/login等路径。"/backend/??/login":匹配/backend/xx/login,但不能匹配/backend/xxx/login。"/backend/*/user/*":匹配/backend/page/user/login、/backend/admin/user/profile等路径。

浙公网安备 33010602011771号