spring-mvc - Spring Boot 过滤器 URL 映射
问题描述
我的控制器的请求映射是这样的:
/hospital/{hospitalId}/department/{departmentId}/doctors
我尝试添加验证所需过滤器的模式:
/hospital/*/department/*/doctors
但它不起作用。有机会完成这项工作吗?
解决方案
过滤器的映射不是您在 Spring 中习惯的 Ant 样式映射,而是Servlet 规范中定义的映射。在第 12.2 节中它说:
以下语法用于定义映射:
- 以“/”字符开头并以“/*”后缀结尾的字符串用于路径映射。
- 以“*”开头的字符串。前缀用作扩展映射。
- 空字符串 ("") 是一种特殊的 URL 模式,它精确映射到应用程序的上下文根,即http://host:port/ / 形式的请求。在这种情况下,路径信息是“/”,servlet 路径和上下文路径是空字符串(“”)。
- 仅包含“/”字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet 路径是请求 URI 减去上下文路径,并且路径信息为空。
- 所有其他字符串仅用于完全匹配。
/hospital/*/department/*/doctors
仅符合最终项目符号的标准,因此被视为完全匹配。
在 servlet 规范范围内,您可以做的最好的事情是/hospital/*
在过滤器的代码中使用然后进行一些辅助匹配。您可以使用 Spring Frameworkorg.springframework.util.AntPathMatcher
来执行此操作。
推荐阅读
- python - 如何为 jupyter 编写 argparse
- javascript - 如何使用基于 3 个单独输入的 Javascript 来检查用户的年龄
- c++ - 为什么我需要另一个迭代器作为 std::copy() 中的参数?
- c# - 通用定时器/工作者函数
- ios - 无论我在应用程序中的哪个位置,当我单击通知时如何转到收件箱选项卡?
- python - 我需要使用 python 请求库对 URL 执行 GET 请求并仅获取最后 100 行
- c# - RabbitMQ 使用 REST API 发布消息
- asp.net-web-api - 单击按钮时调用控制器操作
- makefile - 自动依赖检测在 GFortran 中不起作用
- python - tkinter 使用 python 3.7 的基本查询