多个条件GET参数

时间:2012-11-07 16:08:42

标签: regex node.js routing express params

如何将这两个get请求合并为一个?

app.get('/:something/:else', function(req, res){
  res.render("something");
});

app.get('/:something', function(req, res){
  res.render("something");
});

我尝试过这个并没有用。

app.get('(/:something|/:something/:else)', function(req, res){
  res.render("something");
});

1 个答案:

答案 0 :(得分:2)

我不是100%肯定,但我认为你可以做到:

'/:something/:else?'

否则,您可以将中间件功能存储在变量中:

var m = function (req, res) { }
app.get('/one', m);
app.get('/two', m);

或者您可以使用正则表达式。

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);
});

Express.js网站上有一些信息:http://expressjs.com/api.html#app.VERB

作者还有一个基于Express.js路由的客户端库,所以也许你可以在那里找到更多信息。那就是我能够做到的地方?'例。该库名为page.js,可以找到:http://visionmedia.github.com/page.js/