返回

Express 中间件入门:解锁 Node.js 应用的强大功能

后端

Express 中间件:Node.js 应用的强大定制工具

Express 中间件赋予开发者在 Express.js 框架中插入和执行自定义代码的能力,让 Node.js 应用的开发和定制变得异常强大。它是一个函数,接收一个请求对象、一个响应对象和一个 next 函数作为参数,允许在应用程序的各个层级中执行特定的任务。

Express 中间件的运作原理

当一个请求进入 Express 应用时,它会依次经过一系列中间件。每个中间件都有机会处理请求,修改其内容或执行其他操作。如果中间件调用了 next 函数,请求将继续传递到下一个中间件。如果未调用 next,则请求处理结束,不会再执行后续中间件或路由处理程序。

中间件格式

Express 中间件是一个函数,接收以下参数:

  • req (Request): 代表当前请求的对象。
  • res (Response): 代表服务器响应的对象。
  • next: 一个回调函数,用于将请求传递到下一个中间件或路由处理程序。

中间件的格式如下:

function middleware(req, res, next) {
  // 执行中间件的逻辑
  next();
}

next() 函数的作用

next 函数是中间件的关键部分。它允许中间件将请求传递到下一个中间件或路由处理程序。如果没有调用 next,则请求处理将停止,不会继续执行。

全局生效与局部生效的中间件

全局生效中间件: 在应用程序的每个请求中都会被调用的中间件。通常用于记录请求、身份验证或压缩响应。使用 app.use() 方法注册全局生效中间件。

局部生效中间件: 仅在特定路由或一组路由中被调用的中间件。通常用于身份验证、授权或文件上传。使用 app.use() 方法并指定要应用中间件的路由来注册局部生效中间件。

中间件的作用

中间件在 Express 应用中扮演着至关重要的角色,因为它允许开发者在不同层级插入自定义代码,以执行广泛的任务,包括:

  • 记录请求
  • 身份验证和授权
  • 压缩响应
  • 处理文件上传
  • 解析 JSON 请求体
  • 设置安全标头

Express 中间件的使用示例

以下是一些 Express 中间件的使用示例:

记录请求:

app.use((req, res, next) => {
  console.log(`[${req.method}] ${req.url}`);
  next();
});

身份验证:

const authMiddleware = (req, res, next) => {
  const token = req.header('Authorization');
  if (!token) return res.sendStatus(401);
  jwt.verify(token, 'secret', (err, user) => {
    if (err) return res.sendStatus(403);
    req.user = user;
    next();
  });
};

app.use('/admin', authMiddleware);

压缩响应:

app.use(compression());

常见问题解答

  1. 什么是 Express 中间件?
    它是 Express.js 中的一个函数,允许开发者在应用程序中插入和执行自定义代码。

  2. 中间件如何工作?
    当一个请求进入应用程序时,它会经过一系列中间件,每个中间件都可以修改请求或执行其他操作。

  3. next 函数的作用是什么?
    next 函数允许中间件将请求传递到下一个中间件或路由处理程序。

  4. 如何注册全局生效中间件?
    使用 app.use() 方法,不指定任何路由。

  5. 如何注册局部生效中间件?
    使用 app.use() 方法并指定要应用中间件的路由。