You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mojolicious API路由URL参数中点后内容被截断原因查询

问题原因

这是 Mojolicious 框架路由占位符的默认匹配规则导致的:

  • 以 : 开头定义的标准占位符(比如你代码中的 :filename),默认匹配规则为 [^/.]+,不会匹配路径分隔符 / 和点 .,所以匹配到foo123456后的第一个.时就会终止匹配,最终拿到的参数只有点前面的内容。

解决方法

根据你的使用场景替换占位符类型即可:

  1. 如果你的文件名只包含点、不包含路径分隔符 /,使用宽松占位符(以#开头),它允许匹配点,不会截断内容:
my $route = $r->any('/api')->to('API#');
$route->get('/get_data/#filename')->to('#submit_forms');
  1. 如果你需要匹配的参数包含多级路径(比如dir1/dir2/filename.bz2),可以使用通配符占位符(以*开头),它可以匹配包括 / 在内的所有字符:
$route->get('/get_data/*filename')->to('#submit_forms');

内容的提问来源于stack exchange,提问作者brainoverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:45:00