我希望我的 Express 应用程序能够匹配 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)
来获取整个查询?我希望代码更具可读性,这个拼接在维护过程中很容易被忘记。
最佳答案
看看他们的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);
});
这应该可以解决您的问题:)
关于node.js - ExpressJS 末尾的参数个数可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21345733/