Express.js 中的中间件技巧

阅读时长 4 分钟读完

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() 函数定义了一个中间件函数。该函数输出当前时间,然后调用了 next() 函数以便 Express.js 能够找到下一个中间件函数。如果没有调用 next() 函数,请求将被挂起并且不会向后传递。

我们还可以使用一个独立的路由来添加中间件函数:

在这个例子中,我们使用了两个函数作为回调函数。第一个函数在请求主页时被调用,并输出一个消息,然后调用了 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

纠错
反馈