什么是 Express 中间件?
在 Express 框架中,中间件是指在请求到达路由处理程序之前,对请求进行处理的函数。中间件可以用于处理请求、响应、路由和错误等方面。中间件可以是一个函数,也可以是一组函数。中间件函数可以访问请求对象(req)、响应对象(res)和应用程序的下一个中间件函数(next)。
Express 中间件的使用方式为:
app.use([path], middleware);
其中,path
为可选参数,表示中间件的挂载路径。如果不提供 path
参数,则默认挂载到根路径。middleware
参数为中间件函数。
Express 中间件的分类
Express 中间件可以分为以下两种类型:
应用级中间件
应用级中间件是绑定到应用程序对象(app
)上的中间件,可以使用 app.use()
或 app.METHOD()
函数进行绑定。应用级中间件会在每个请求到达服务器时执行。应用级中间件可以用于处理路由、错误处理、请求过滤等方面。
以下是一个简单的应用级中间件的示例:
app.use(function(req, res, next) { console.log('Time:', Date.now()); next(); });
路由级中间件
路由级中间件是绑定到路由上的中间件,可以使用 router.use()
或 router.METHOD()
函数进行绑定。路由级中间件会在路由处理程序之前执行。路由级中间件可以用于处理路由参数、请求过滤等方面。
以下是一个简单的路由级中间件的示例:
router.use(function(req, res, next) { console.log('Time:', Date.now()); next(); });
Express 中间件的执行顺序
在 Express 中,中间件的执行顺序是按照挂载顺序依次执行的。如果当前中间件没有调用 next()
函数,则后续中间件将不会被执行。
以下是一个中间件执行顺序的示例:
// javascriptcn.com 代码示例 app.use(function(req, res, next) { console.log('Middleware 1'); next(); }); app.use(function(req, res, next) { console.log('Middleware 2'); next(); }); app.use(function(req, res, next) { console.log('Middleware 3'); next(); });
执行结果为:
Middleware 1 Middleware 2 Middleware 3
Express 中间件的常用功能
处理静态文件
Express 中间件可以用于处理静态文件,例如 CSS、JavaScript、图片等。可以使用 express.static()
函数来创建一个处理静态文件的中间件。
以下是一个处理静态文件的中间件的示例:
app.use(express.static('public'));
该中间件将会处理 public
目录下的所有静态文件。
处理请求体
Express 中间件可以用于处理请求体,例如 JSON、urlencoded 等格式的请求体。可以使用 body-parser
模块来创建一个处理请求体的中间件。
以下是一个处理 JSON 请求体的中间件的示例:
const bodyParser = require('body-parser'); app.use(bodyParser.json());
该中间件将会处理所有 JSON 格式的请求体。
处理错误
Express 中间件可以用于处理错误,例如找不到路由、请求超时等错误。可以使用 next(err)
函数来传递错误到错误处理中间件。
以下是一个处理错误的中间件的示例:
app.use(function(err, req, res, next) { console.error(err.stack); res.status(500).send('Something broke!'); });
该中间件将会处理所有的错误,并返回一个 HTTP 500 错误响应。
总结
Express 中间件是一个非常强大的功能,可以用于处理请求、响应、路由和错误等方面。掌握中间件的使用方法,可以大大提高开发效率和代码质量。在使用中间件时,需要注意中间件的执行顺序和错误处理等方面的问题,以确保应用程序的稳定性和可靠性。
参考资料
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65557ac8d2f5e1655dfaac20