Express 是一個基于 Node.js 的 Web 框架,中間件是 Express 中的重要概念之一。中間件可以在請求到達目標(biāo)路由之前或之后執(zhí)行一些操作,例如日志記錄、請求體解析、認(rèn)證授權(quán)等。下面是 Express 中間件的調(diào)用流程和常規(guī)操作:
調(diào)用流程
Express 中間件的調(diào)用流程是一個類似于管道的過程,請求會依次經(jīng)過一個個中間件,每個中間件可以對請求進行修改或攔截。當(dāng)一個中間件執(zhí)行完畢后,可以通過調(diào)用 next() 方法將請求傳遞給下一個中間件,如果不調(diào)用 next() 方法,則請求將被當(dāng)前中間件攔截。
常規(guī)操作
Express 中間件的常規(guī)操作包括以下幾個方面:
(1)編寫中間件
中間件可以是一個函數(shù)或一個函數(shù)數(shù)組,函數(shù)接收三個參數(shù):請求對象(req)、響應(yīng)對象(res)和 next 函數(shù)。例如:
function logger(req, res, next) {
console.log(`${req.method} ${req.url}`);
next();
}
(2)注冊中間件
使用 app.use() 方法可以注冊中間件,例如:
app.use(logger);
可以通過傳遞路徑參數(shù)來為特定的路由注冊中間件,例如:
app.use('/api', apiMiddleware);
(3)錯誤處理中間件
錯誤處理中間件可以在發(fā)生錯誤時對請求進行處理,例如返回錯誤信息或重定向到錯誤頁面。錯誤處理中間件接收四個參數(shù):錯誤對象(err)、請求對象(req)、響應(yīng)對象(res)和 next 函數(shù)。例如:
function errorHandler(err, req, res, next) {
console.error(err.stack);
res.status(500).send('Something broke!');
}
使用 app.use() 方法注冊錯誤處理中間件,例如:
app.use(errorHandler);
除了上述常規(guī)操作外,還可以使用第三方中間件或編寫自己的中間件庫來擴展 Express 功能。