我正在模仿另一个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)之间映射正则表达式。
思想?
答案 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。