Express.js 是一个非常流行的 Node.js Web 框架,它主要用于构建Web应用程序以及API。该框架提供了丰富的特性和功能,其中之一就是中间件。中间件可以用于在请求和响应之间添加逻辑和功能,比如添加认证、限流、日志和错误处理等等。在本文中,我们将讨论 Express.js 中的中间件技巧。
什么是中间件?
在 Express.js 中,中间件是一个函数,它可以访问请求对象(request)、响应对象(response)和应用程序的下一个中间件函数。中间件函数可以执行以下操作:
- 执行任何代码。
- 修改请求对象(request),例如添加属性或修改属性值。
- 修改响应对象(response),例如添加头信息或响应正文。
- 调用下一个中间件函数。
中间件的使用
在 Express.js 中,通过 app.use() 或 app.method() 函数使用中间件。其中,app.use() 函数可以用于在所有 HTTP 请求上使用中间件,而 app.method() 函数只使用中间件于指定的 HTTP 方法上。
例如,我们可以使用该函数添加一个中间件函数来响应所有的HTTP请求:
app.use(function (req, res, next) { console.log('Time:', Date.now()); next(); });
在这个例子中,我们通过 app.use() 函数定义了一个中间件函数。该函数输出当前时间,然后调用了 next() 函数以便 Express.js 能够找到下一个中间件函数。如果没有调用 next() 函数,请求将被挂起并且不会向后传递。
我们还可以使用一个独立的路由来添加中间件函数:
app.get('/', function (req, res, next) { console.log('请求主页'); next(); }, function (req, res) { res.send('欢迎来到我的主页'); });
在这个例子中,我们使用了两个函数作为回调函数。第一个函数在请求主页时被调用,并输出一个消息,然后调用了 next() 函数,以便 Express.js 能够找到下一个中间件函数。第二个函数则响应请求并向客户端发送一个消息。
中间件的嵌套
我们可以通过对多个中间件函数进行嵌套来执行一组相关的操作。例如,我们可以使用三个中间件函数来实现身份认证:
-- -------------------- ---- ------- -------- -------------------------- ---- ----- - ---------------------- ------- - -------- --------------------- ---- ----- - -------------------- ------- - ------------------- ---------------------- ----------------- -------- ----- ---- - ----------------------- ---
在这个例子中,我们使用了三个中间件函数。第一个函数 requireAuthentication() 检查请求是否包含身份认证信息,如果没有,则输出一条消息。第二个函数 checkCredentials() 检查凭据是否正确,然后调用 next() 函数。第三个函数响应请求并向客户端发送一个消息。
我们可以使用类似的方式来实现其他类型的中间件函数。
中间件的顺序
在 Express.js 中,中间件函数的顺序非常重要。如果我们有多个中间件函数,它们将按照定义顺序执行。如果中间件函数没有调用 next() 函数,则请求将被挂起并且不会向后传递。
例如,如果我们有以下三个中间件函数:
-- -------------------- ---- ------- -------- ---------------- ---- ----- - ---------------------- ------- - -------- ---------------- ---- ----- - ---------------------- ------- - -------- ---------------- ---- ----- - ---------------------- ------- - ------------ ------------ ------------ -------------
在这个例子中,middleware1() 函数将在 middleware2() 和 middleware3() 函数之前执行。如果我们想要更改中间件函数的顺序,只需要调整它们在 app.get() 函数中的位置。
结论
在本文中,我们讨论了 Express.js 中的中间件技巧。我们了解到中间件是一个函数,可以访问请求和响应对象,并且可以修改它们,或在响应对象上添加属性或方法。我们学习了如何使用 app.use() 和 app.method() 函数添加中间件,以及如何使用多个回调函数来执行一组相关操作。最后,我们讨论了中间件函数的顺序及其重要性。希望这篇文章能够帮助大家更好地理解 Express.js 中的中间件技巧,以及如何正确地应用它们。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6730b52eeedcc8a97c92b113