uri匹配

AntPathMatcher 是 Spring 框架提供的一个用于路径匹配的工具类,主要用于匹配 URL 路径。在 Spring 中,AntPathMatcher 被广泛用于 URL 路径的模式匹配,如 Spring Security、Spring MVC 等。

AntPathMatchermatch() 方法遵循一定的匹配规则,它支持通配符(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 等路径。
posted @   langpo  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示