3

我正在模仿另一个 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)。

想法?

4

1 回答 1

4
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。

于 2013-03-22T03:24:59.643 回答