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

如何在Koa Router中匹配包含斜杠的最后一个URL参数

解决koa-router匹配带斜杠子路径的问题

嘿,我之前也碰到过一模一样的需求,koa-router其实完全能搞定这个,给你两种实用的实现方式:

方式一:带正则的命名参数(推荐)

如果你想给捕获到的路径部分起个明确的名字(比如path),可以在参数里加上正则表达式,让它能匹配包含斜杠的内容:

router.get('/foo/:path(.+)', async (ctx) => {
  console.log(`PATH: ${ctx.params.path}`);
});

这里的.+正则会匹配一个或多个任意字符(包括斜杠),所以不管/foo/后面是单层路径还是多层嵌套路径(比如/foo/dir/xxx、/foo/a/b/c/d),都能被正确捕获,而且你可以通过ctx.params.path直接拿到对应的内容。

方式二:通配符路由

如果不需要命名参数,只想简单捕获所有以/foo/开头的路径,直接用*通配符就行:

router.get('/foo/*', async (ctx) => {
  console.log(`PATH: ${ctx.params[0]}`);
});

这种写法下,*会匹配/foo/之后的所有内容,捕获到的部分会存在ctx.params[0]里,效果和第一种完全一样。

注意事项

  • 路由匹配是按顺序执行的,如果你还有其他更具体的路由(比如/foo/bar),一定要把它们放在这个通配路由的前面,不然会被通配路由先匹配到。
  • 如果想允许/foo/本身(也就是/foo/后面没有内容),可以把正则改成.*(匹配零或多个字符),适配这种场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 12:47:42