java - 当 Path 中的第一个参数丢失时,多个 PathParams 不会失败
问题描述
我有一个需要两个强制性路径参数的路径。当包含第二个参数但排除第一个参数时,我的服务会被击中,因为 URI 无效,因此我预计会出现 404。
@GET
@Path("service/{param1}/{param2}")
public Response getSuppliersBySupplierCode(@PathParam("param1") String param1, @PathParam("param2") String param2) {
//do something
}
我希望在以下 3 个场景中的每一个中都有一个 404,但后两个有效。
..../service//
-> 以 404 失败
..../service/param/
-> 点击我的服务
..../service//param2
-> 点击我的服务
为什么我在场景 2 和 3 中没有得到 404?我希望它会失败,因为我的两个参数之一丢失了
解决方案
第二种和第三种情况起作用的原因是默认情况下匹配路径变量,[^/]+?
这意味着它们将匹配空字符串。您可以通过添加冒号然后添加正则表达式来更改进行匹配的正则表达式,如下所示{param1: [a-zA-Z][a-zA-Z_0-9]}
。有关更多详细信息,请参阅本文。
推荐阅读
- python - 我可以一次在多个函数上使用 await 吗?
- php - 将用 AcademictwitteR 下载的推文导入 DMI-TCAT
- excel - SAP 软件到 Excel - 宏不会将值粘贴到电子表格中
- amazon-web-services - AWS 上的 OAI 与 IAM“用户”有什么区别?
- visual-studio-code - VS 代码文件名建议不起作用
- c# - 等待批量插入存储过程完成
- python - List.insert() 插入错误的索引
- c++ - 如何将 SDL 窗口与终端同步?
- r - 如何创建一个基于变量分配数字的变量?
- r - 仅提取字符串中最后一个数字后的空格后的字符