【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
      • 价值;副高高频需求、成熟可靠
相关推荐
光影少年10 小时前
Express 中间件原理
后端·node.js·express
时速GEO系统10 小时前
初元 AI V1.1 版本升级,首个正式版发布一周・实现生成、部署、上线、优化全流程自动化闭环
人工智能·数据挖掘·node.js
青山木13 小时前
RocketMQ 入门到原理(三):消息存储原理
java·后端·中间件·架构·rocketmq
console.log('npc')15 小时前
06 — Model 层:数据模型与操作
前端·后端·node.js·express
右耳朵猫AI15 小时前
Web前端周刊2026W38 | React 19.3 发布、StyleX 深潜、jsdom 30.1 提速
前端·javascript·react.js·typescript·node.js
光影少年18 小时前
Koa 为什么使用洋葱模型
后端·node.js·koa
shmily麻瓜小菜鸡2 天前
TDD(测试驱动开发)详解
开发语言·javascript·typescript·node.js·ecmascript
半生过往2 天前
Node.js 多版本管理完全指南
node.js
青山木2 天前
RocketMQ 入门到原理(一):整体架构与消息的生命周期
java·分布式·后端·中间件·架构·rocketmq