uri匹配

news/2025/1/1 20:35:04/文章来源:https://www.cnblogs.com/zyb-luckey/p/18642556

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 等路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/861599.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

风继续吹

风继续吹 一、学期回顾 1.1 回顾你对于软件工程课程的想象 在学期初,我对软件工程课程没多少了解,觉得它应该和之前的部分课程一样,老师讲解一些编程语法然后布置作业,后期周末去实验室编程完成实验,期末再复习一下这门课编写代码作答题目这门课也就过去了。但实际上的软工…

初识Spring -2024/12/30

Spring优点Spring FrameworkCore Container:核心容器 AOP:面向切面编程 Aspects: AOP思想实现 Data Access :数据访问 Data Integration: 数据集成IoC,IoC容器,Bean,DI导入依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring…

【Leetcode】链表

链表 160. 相交链表 206. 反转链表 234. 回文链表 141. 环形链表 142. 环形链表 II 21. 合并两个有序链表 2. 两数相加 19. 删除链表的倒数第 N 个结点 25. K 个一组翻转链表 138. 随机链表的复制 148. 排序链表 23. 合并 K 个升序链表 146. LRU 缓存 160. 相交链表 方法一:模…

The end-软工实践之旅

一、学期回顾 1.1 回顾你对于软件工程课程的想象 在学期初,我眼中的软件工程课程是一门教大家如何从零开始开发软件,实际上大部分知识都需要自己学习掌握,软工课着重系统地学习软件开发流程,掌握从需求分析、设计、编码到测试的全套本领,雕琢出实用且受欢迎的软件作品。 如…

‍禁止蕉绿——软件工程个人总结

这个作业属于哪个课程 软件工程这个作业要求在哪里 软件工程2024秋——个人总结作业这个作业的目标 学期总结学号 102202150🙅‍禁止焦虑——2024秋软工实践个人总结博客 一、🎞️学期回顾🎞️ 1.1 💭回顾你对于软件工程课程的想象💭 刚开始我对软件工程的理解只局限…

《计算机组成及汇编语言原理》阅读笔记:p133-p159

《计算机组成及汇编语言原理》学习第 11 天,p133-p159 总结,总计 27 页。 一、技术总结 1.segment (1)定义 Broadly speaking, a contiguous section of memory. More specifically, a section of memory referenced by one of the segment registers of the 80x86 family.…

并非银河战舰,皮划艇也能启航

目录标题一、学期回顾1.1 回顾对软工课程的想象1.2 回顾在这门课程中的投入与产出1.3 最印象深刻的答辩二、总结收获2.1 自己的人月神话2.2 学习到的新技术和生产力工具2.3 除了技术之外,还得到了哪些提升2.4 对下一届实践的建议三、致谢这个作业属于哪个课程 https://edu.cnb…

GitHub Copilot免费上线!快速上手指南与功能解析

GitHub Copilot在12月宣布免费订阅,不再限制学生和开源项目的维护者了,对于习惯白嫖的开发者来说无疑多了一个选择。 价格和功能 免费版目前可以选择Claude 3.5 Sonnet或GPT-4o模型,每月可以调用 2000 次生成和补全代码,以及 50 次聊天信息。快速开始注册一个GIthub账号 VS…

C#/.NET/.NET Core技术前沿周刊 | 第 19 期(2024年12.23-12.29)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等…

Notepad – – (文本编辑器) v3.0.0 官方版

这是一个使用C++编写的文本编辑器Notepad- -,可以支持Win/Linux/Mac平台。 我们的目标是要替换Notepad++,重点在国产Uos系统、Mac 系统上发展。 一个支持windows/linux/mac的文本编辑器,目标是要替换notepad++,来自中国。 对比Notepad++而言,我们的优势是可以跨平台,支持l…

【Node.js编程】实现GETPOST请求

创建基本的服务器 const express = require(express); const indexRouter = require(./router); // 引入路由 const app = express(); const port = 3000; // 挂载路由 app.use(/api, indexRouter); app.listen(port, () => {console.log(`Server is running on http://loca…

openEuler RISC-V上磁盘I/O性能测试的IOZone实例

IOZone 是一个广泛使用的文件系统性能基准测试工具,旨在评估磁盘 I/O 性能。它能够测试各种类型的文件操作,包括顺序读写、随机读写、重载(re-write)、读取已写入的数据等。通过这些测试,IOZone 可以帮助用户了解不同文件系统和存储设备的性能特点,从而为选择合适的硬件和…