带有params的Node.js/Express路由

Eri*_*rik 50 node.js express

假设我得到这样的路线:

app.get('/documents/format/type', function (req, res) {
   var format = req.params.format,
       type = req.params.type;
});
Run Code Online (Sandbox Code Playgroud)

所以如果我提出要求的话

http://localhost:3000/documents/json/mini
Run Code Online (Sandbox Code Playgroud)

在我的格式和类型变量将分别是'json'和'mini',但如果我提出请求

http://localhost:3000/documents/mini/json
Run Code Online (Sandbox Code Playgroud)

不.所以我的问题是:如何以不同的顺序获得相同的变量?

ale*_*lex 135

你的路线不行,应该是这样的(带':')

app.get('/documents/:format/:type', function (req, res) {
   var format = req.params.format,
       type = req.params.type;
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,你不能互换参数顺序.有关req.params(和req.query)的更多信息,请查看此处的api参考.

  • // var sanitizer = require('sanitizer'); var format = sanitizer.escape(req.params.format); 你真的应该消毒结果.否则您的网站有一个巨大的漏洞 (6认同)

Seb*_*ian 38

对于domain.com/test?format=json&type=mini格式等查询参数,您可以通过 - req.query轻松接收它.

app.get('/test', function(req, res){
  var format = req.query.format,
      type = req.query.type;
});
Run Code Online (Sandbox Code Playgroud)