我希望我的快递应用与file/a
和file/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)
来获取整个查询?我希望代码更具可读性,这种拼接在维护期间很容易被遗忘。
答案 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);
});
这可以解决你的问题:)