ExpressJS Variable最后的参数数量

时间:2014-01-25 02:12:32

标签: node.js parameters express request optional-parameters

我希望我的快递应用与file/afile/a/b/c的请求相匹配,file/后的变量数量至少为1。

我试过了:

app.get('/file/:path?*', function(req,res){
    res.send(req.params.path);   
});

但结果是:

$ curl localhost:3000/file/a
a
$ curl localhost:3000/file/a/b
a

如何通过不使用req.query.splice(1)来获取整个查询?我希望代码更具可读性,这种拼接在维护期间很容易被遗忘。

1 个答案:

答案 0 :(得分:1)

看看他们的documentation,有关于它的一行:

也可以使用正则表达式,如果你有非常具体的约束,它可能很有用,例如以下匹配" GET / commits / 71dbb9c"以及" GET /commits/71dbb9c..4c084f9"。

app.get(/^\/commits\/(\w+)(?:\.\.(\w+))?$/, function(req, res){
  var from = req.params[0];
  var to = req.params[1] || 'HEAD';
  res.send('commit range ' + from + '..' + to);
});

这可以解决你的问题:)