调用路由处理程序内部的函数与使用中间件相比



我正在努力了解是否存在任何差异。我将尝试用express文档中的一个示例来解释它:https://expressjs.com/en/guide/using-middleware.html

function logOriginalUrl (req, res, next) {
console.log('Request URL:', req.originalUrl)
next()
}
function logMethod (req, res, next) {
console.log('Request Type:', req.method)
next()
}
const logStuff = [logOriginalUrl, logMethod]
app.get('/user/:id', logStuff, (req, res, next) => {
res.send('User Info')
})

logOriginalUrl和logMethod是本例中的中间件。如果我这样写会发生什么:

function logOriginalUrl() {
console.log('Request URL:', req.originalUrl);
}
function logMethod() {
console.log('Request Type:', req.method);
}
app.get('/user/:id', (req, res, next) => {
logOriginalUrl();
logMethod();
res.send('User Info')
})

这两者之间有什么区别吗?这是一个非常简单的例子,但它可以应用于任何其他必须操作req或做任何其他事情的例子。

中间件和在路由处理程序中调用+等待函数之间的区别是什么?

从理论上讲,作为中间件,我可以做任何事情,我觉得我可以通过在路由处理程序函数中等待相同的函数来实现完全相同的事情。那么,我想念什么呢?

您的第二个代码将抛出一个错误,因为reqlogOriginalUrllogMethod作用域中的undefined

但如果你能正确地传递这些数据,那就绝对没有区别了。中间件是为了方便。

它们用于处理路由之间的常见场景,并使代码更具可读性。

相关内容

最新更新