中间件(Middleware)是Express.js中一个重要的概念,它是在请求和响应之间执行的函数。中间件函数可以访问请求对象(req)和响应对象(res),并且可以修改它们、执行特定的任务,或将控制权传递给下一个中间件。

在Express.js中,可以通过app.use()或app.METHOD()方法使用中间件。app.use()方法可以将中间件应用到每个请求,而app.METHOD()方法则将其应用到特定的HTTP方法的请求上。

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

const express = require('express');
const app = express();
 
// 自定义中间件函数
const myMiddleware = (req, res, next) => {
  // 执行某些特定的任务
  console.log('执行中间件任务');
  
  // 修改请求对象
  req.customProperty = '自定义属性';
  
  // 将控制权传递给下一个中间件
  next();
}
 
// 应用全局中间件
app.use(myMiddleware);
 
// 应用特定路径的中间件
app.get('/users', myMiddleware, (req, res) => {
  // 访问中间件修改后的请求对象
  console.log(req.customProperty);
  
  // 返回响应
  res.send('用户列表');
});
 
// 启动服务器
app.listen(3000, () => {
  console.log('服务器已启动');
});

在上面的例子中,我们创建了一个名为myMiddleware的自定义中间件函数。我们使用app.use()方法将该中间件应用到每个请求上。然后,我们使用app.get()方法定义了一个特定路径的请求处理程序,并将myMiddleware作为第二个参数传递给app.get(),以将中间件应用到该特定请求上。

myMiddleware中,我们执行了一些特定的任务,例如打印消息、修改请求对象,然后通过调用next()函数将控制权传递给下一个中间件或请求处理程序。

通过这种方式,您可以创建和使用自己的中间件,可以在其中执行各种任务,例如身份验证、日志记录、错误处理等。使用中间件的好处是可以将代码逻辑分解成可重用的模块,并实现请求的预处理和后处理。