Node.js ExpressJS结尾的参数数量可变

Node.js ExpressJS结尾的参数数量可变,node.js,parameters,express,request,optional-parameters,Node.js,Parameters,Express,Request,Optional Parameters,我希望我的express应用程序将请求与文件/a和文件/a/b/c匹配,在文件/之后的变量数至少为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)如何获得整个查询?我希望代码

我希望我的express应用程序将请求与
文件/a
文件/a/b/c
匹配,在
文件/
之后的变量数至少为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)
如何获得整个查询?我希望代码更具可读性,在维护过程中,此拼接很容易被忘记。

看看它们的代码,其中有一行代码:

也可以使用正则表达式,如果您有非常具体的限制,则正则表达式可能非常有用,例如,以下内容将匹配“GET/commissions/71dbb9c”以及“GET/commissions/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);
});