📜  如何在 express 中创建自定义中间件?(1)

📅  最后修改于: 2023-12-03 15:08:36.637000             🧑  作者: Mango

如何在 Express 中创建自定义中间件?

在 Express 中,中间件(Middleware)是指在 HTTP 请求-响应周期中被执行的函数,它可以访问请求对象(request object),响应对象(response object),以及应用程序的请求-响应周期中的下一个中间件函数。 中间件可以执行以下操作:

  • 执行任何代码。
  • 处理请求和响应对象。
  • 终结请求-响应周期。
  • 调用堆栈中的下一个中间件。

在本文中,我们将学习如何在 Express 中创建自定义中间件。

创建自定义中间件

在 Express 中,可以通过向应用程序添加中间件来创建自定义中间件。可以通过以下方法将中间件添加到应用程序中:

  • 应用程序级别的中间件
  • 路由级别的中间件
  • 错误处理中间件
应用程序级别的中间件

应用程序级别的中间件位于请求处理管道的最顶层,并且通过 app.use() 方法挂载到指定路径。应用程序级中间件的语法如下:

app.use(function (req, res, next) {
  console.log('Time:', Date.now());
  next();
});

上面的中间件函数输出当前时间,然后调用堆栈中的下一个中间件。如果没有调用 next()函数,则请求将被挂起,并且客户端将无法接收到响应。

路由级别的中间件

路由级别的中间件与应用程序级别的中间件类似,但它们与特定的 URL 路径相关联。路由级别中间件可以使用 router.use()router.METHOD() 函数挂载到指定路径。以下代码演示如何使用中间件处理特定的请求方法和 URL 路径:

var express = require('express');
var router = express.Router();

router.use(function (req, res, next) {
  console.log('Time:', Date.now());
  next();
});

router.get('/', function(req, res) {
  res.send('Hello World!');
});

router.get('/about', function(req, res) {
  res.send('About Page');
});

module.exports = router;

上面的代码创建了一个路由级的中间件,并将其挂载到根路径和 /about 页面中。当通过浏览器访问这些 URL 时,中间件将输出当前时间。

错误处理中间件

错误处理中间件处理运行时错误。如果应用程序出现错误,Express 会将该错误传递给错误处理中间件。错误处理中间件可以通过以下语法定义:

app.use(function (err, req, res, next) {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

上面的代码创建了一个错误处理中间件。如果应用程序抛出一个未处理的错误,错误处理中间件将捕获该错误并向客户端发送一个 500 状态码和一个友好的错误消息。

结论

自定义中间件是 Express 框架中一个重要的功能,可以将各种功能添加到请求-响应周期中,在代码组织、实现自定义鉴权等方面提供了很大的灵活性。我们希望本篇文章可以帮助您在开发过程中更好地使用自定义中间件。