node.js - ExpressJS 末尾的参数个数可变

标签 node.js parameters express request optional-parameters

我希望我的 Express 应用程序能够匹配 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) 来获取整个查询?我希望代码更具可读性,这个拼接在维护过程中很容易被忘记。

最佳答案

看看他们的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/

相关文章:

node.js - 带 Strongloop 构建包的 Heroku npm 版本

javascript - 获取路由中的内容 - Nodejs

c# - 通过引用传递和使用 ref

javascript - PHP 删除 &(和)符号之后的所有内容

javascript - Node.js Express req.query 未定义

node.js - 使用 Node 将上传的文件流式传输到 Azure blob 存储

node.js - 创建或更新 dynamodb

javascript - Node.js Express haml 无法正确呈现

javascript - RxJS bufferWithCount() 不会因超时而暂停

java - ASM(Java的字节码工具)中的Frame如何使用? visitFrame/FrameNode的各个参数是什么意思?