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 功能。