Middleware in Express.js: 处理中间请求

简介 Middleware 在 Express.js

Middleware in Express.js 是一个强大的概念,允许您在请求-响应生命周期中按特定顺序执行函数。 这些函数可以执行各种任务,例如身份验证、日志记录、数据验证等。 Middleware 函数按顺序执行,每个函数都 middleware 可以访问 requestresponse 对象,以及 next 将控制权传递给 middleware 堆栈中下一个函数的函数。

为什么使用 Middleware ?

Middleware 对于模块化应用程序的功能和增强其可维护性至关重要。 它使您能够保持路由处理程序干净并专注于特定任务,同时将常见或横切关注点转移到 middleware 功能上。 这种关注点分离提高了代码的可重用性,并使您的代码库更有条理。

创建和使用 Middleware

middleware 要在 中 创建 Express.js,您需要定义一个采用三个参数的函数: requestresponsenext

middleware 这是记录每个传入请求 的基本示例:

const logMiddleware =(req, res, next) => {  
  console.log(`Received a ${req.method} request at ${req.url}`);  
  next(); // Pass control to the next middleware  
};  
  
app.use(logMiddleware);  

您可以使用该 app.use() 方法全局应用于 middleware 所有路由,也可以有选择地应用于特定路由。

Middleware 执行 顺序

Middleware 函数按照使用 定义的顺序执行 app.use()

例如:

app.use(middleware1);  
app.use(middleware2);  

在这种情况下,将 在所有传入请求 middleware1 之前执行。 middleware2

处理错误 Middleware

如果函数内发生错误 middleware,可以将错误传递给函数 next,函数 Express.js 会自动跳转到错误处理 middleware。

这是一个例子:

const errorMiddleware =(err, req, res, next) => {  
  console.error(err);  
  res.status(500).send('Something went wrong!');  
};  
  
app.use(errorMiddleware);  

用于 Middleware 身份验证

Middleware 通常用于在 Web 应用程序中实现身份验证和授权。 例如,您可以创建一个 middleware 函数,在允许访问某些路由之前检查用户是否经过身份验证:

const authenticateMiddleware =(req, res, next) => {  
  if(req.isAuthenticated()) {  
    return next(); // User is authenticated, proceed to the next middleware  
  }  
  res.redirect('/login'); // User is not authenticated, redirect to login page  
};  
  
app.get('/profile', authenticateMiddleware,(req, res) => {  
  res.send('Welcome to your profile!');  
});  

 

结论

Middleware in Express.js 是管理和增强 Web 应用程序功能的重要工具。 通过创建可重用的 middleware 函数,您可以简化代码、模块化关注点并提高项目的整体可维护性。 从处理身份验证到日志记录和错误管理, middleware 使您能够高效构建健壮且安全的 Web 应用程序。