快递,多条路线相同的function

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

完全可以接受的权利? 作为新来expression我想知道是否有更快速的方式来处理这个问题。 我知道你可以使用正则expression式,但我不知道你可以映射正则expression式跨越不同的HTTP动词(POST与PUT)。

思考?

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

你可以将expression式中的动词组合在一起,你只需要使用all并检查方法,如果匹配的话,处理请求的其他方式将它们传递给处理程序链(使用next(); )。

这就是说,我认为你做的是对的,没有理由路由处理程序需要lamdas。