Express,多个路由到同一个功能

时间:2013-03-22 02:45:40

标签: node.js express

我正在模仿另一个api。我也想提供一个不同的(更好的恕我直言)api。

// this is url I need to support 
api.post('/books/updateBook', function(req, res) {
...
});

// Would also like to support
api.put('/books/:bookId', function(req, res) {
...
});

我很容易做到:

var updateBook = function(req, res) {
...
}

// this is url I need to support 
api.post('/books/updateBook', updateBook);

// Would also like to support
api.put('/books/:bookId', updateBook);

完全可以接受吗?新来表达我想知道是否有更“快速”的方式来处理这个问题。我知道你可以使用正则表达式,但我不确定你是否可以在不同的HTTP动词(POST与PUT)之间映射正则表达式。

思想?

1 个答案:

答案 0 :(得分:5)

api.all('/books/:bookId', function (req, res, next) {
  if (req.method === 'PUT' || req.method === 'POST) {
    //get your groove on
  } else {
    next();
  }
});

你可以在express中组合动词,只需使用all并检查方法,如果匹配,则处理请求,然后将其传递给处理程序链(使用next();)。

话虽如此,我认为你做得对,路由处理程序没有理由需要lamdas。