node.js - Express.js 路由 : optional splat param?

标签 node.js express

我的路线如下所示:

app.all('/path/:namedParam/*splat?',function(req,res,next){
  if(!req.params.length){
    // do something when there is no splat
  } else {
    // do something with splat
  }
});

但是,这不起作用 - 如果我调用 path/foo/bar 它会到达路线,但如果我调用 path/foo,它不会.

是否可以有一个可选的 splat 参数,还是我必须使用正则表达式来检测这个?

编辑:

为了更清楚,这里是我想要达到的要求:

  • 第一个和第二个参数是必需的
  • 第一个参数是静态的,第二个是命名参数。
  • 可以附加任意数量的 可选 附加参数,并且仍然可以访问路由。

最佳答案

这适用于 express 4 上的/path 和/path/foo,注意 ? 之前的 *

router.get('/path/:id*?', function(req, res, next) {
    res.render('page', { title: req.params.id });
});

关于node.js - Express.js 路由 : optional splat param?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020099/

相关文章:

express - vue使用axios上传文件到azure blob,但是没有从后台服务器接收到body值

node.js - 不能在另一个 Controller 中使用 req.user

node.js - 同步机制在本地计算机上运行良好,但会删除 Heroku 上的所有视频

Node.js 和 MongoDB Atlas Mongoose 连接错误

javascript - 找不到全局变量 - Node.js 中的窗口

javascript - 如何使用 node.js 结合基于 id(transectionid) 的两个集合?

node.js - express -s 不工作

node.js - 使用 Json Web token 的 Node-Restful

Node.js 无法将 x-zip-compressed 转换为 application/zip

javascript - Express.js : Match route in catch all