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