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

actix-web如何创建匹配任意多级斜杠路径的路由(如/starts-with/a/.../e)

问题原因

actix-web 默认的路径参数匹配规则为[^/]+,仅会捕获两个斜杠之间的单个路径段,遇到斜杠就会终止匹配,因此原有写法中的{other_url}只能匹配单段后续路径,无法捕获带斜杠的多级路径。

实现方法

要匹配前缀后任意数量的路径段(包含斜杠),只需修改路径参数的匹配规则,通过.*正则匹配前缀后的所有剩余路径内容即可,和原有代码逻辑兼容,改动最小的实现代码如下:

#[get("/starts-with/{other_url:.*}")]
async fn t1(other_url: web::Path<String>) -> impl Responder {
    other_url.to_string()
}
  • 匹配效果:请求/starts-with/a时捕获到的值为a,请求/starts-with/a/b/c/d/e时捕获到的值为a/b/c/d/e,支持任意层级的后续路径匹配。
  • 注意事项:如果存在同/starts-with/前缀的其他精确路由(例如/starts-with/health),需要将精确路由在该通配尾路由之前注册,否则请求会被通配路由提前拦截,无法进入精确路由的处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:21:26