【Node.js Express中间件理解及中间件分类和作用】

中间件:拦截HTTP请求的函数

一 核心作用

  • 请求到达路由前执行操作(如解析、校验)

  • 响应发送前执行操作(如日志、处理)

  • 中间件的标准形式:

    function middleware(req,res,next){
    //处理逻辑(解析/校验等)
    next() ;//传递控制权给下一个中间件/路由
    }

  • Express应用本质是中间件链组合,每个请求从头到尾以此处理

二 中间件分类

  • 应用程序级中间件

    • 通过app.use()挂载,作用于全局或路径

    • 用于统一处理解析、日志、安全等全局逻辑

      app.use(express.json()) // 解析JSON 请求体
      //全局日志记录
      app.use((req,res,next)=>{
      console.log([${Date.now()}]${req.method}${req.url})
      next()
      })

  • 路由级中间件

    • 挂载在express.Router()实例上,仅作用当前路由模块

    • 用于模块化组织业务逻辑

      const router =express.Router()
      router.use((req,res,next)=>{
      console.log('进入用户模块')
      next()
      })
      app.use('/users',router)

  • 错误处理中间件

    • 定义:捕获并处理错误,必须接收四个参数(err,req,res,next)

    • 统一返回错误响应,提升系统健壮性

      //错误中间件
      app.use(()=>{
      res.send({
      status:1,
      msg:err instanceof Error?err.message:err,
      })
      })

  • 内置中间件

    • 定义:Express原生提供,无需额外安装
    • 例子
      • express.static('public'):托管静态资源
      • express.json():解析JSON 请求体
      • express.urlencoded();解析请求体数据
  • 第三方中间件

    • 社区开发,npm 安装扩展功能
    • 例子
      • 数据验证:express-validator
      • 文件上传:multer
      • 解决跨域问题:cors
      • 价值;副高高频需求、成熟可靠
相关推荐
吴爃1 小时前
小微企业 SRE 稳定性建设(四):消息链路与消费积压
中间件·容量规划·消息队列·sre
明月_清风12 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
guslegend16 小时前
脚手架原理与本地调试:从 bin 软链接到 npm link
前端·npm·node.js·脚手架·前端工程化
zReadonly18 小时前
不用反复 nvm use 了:nvm-windows 2.x 按项目自动切换 Node.js
前端·node.js
Wang's Blog18 小时前
Java 中间件之 RabbitMQ 快速入门: 异步通讯的优缺点
java·中间件·java-rabbitmq
百度一下吧1 天前
Fastify 实战教程:从零搭建电商平台后台服务系统
node.js
Wang's Blog1 天前
Java 中间件之 RabbitMQ 快速入门: MQ 常见技术选型对比
java·中间件·java-rabbitmq
YIAN1 天前
LangGraph 完全入门指南:从线性工作流到带中断恢复的有状态 Agent 编排
langchain·node.js·agent
DevUp1 天前
Directus 换掉 GPL 之后,Node.js CMS 到底怎么选?(二)
开源·node.js·cms