【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
      • 价值;副高高频需求、成熟可靠
相关推荐
前端小超人rui2 小时前
封装Express 自定义中间件
中间件·node.js·express
码界索隆3 小时前
【腾讯位置服务开发者征文大赛】用 AI Agent + MCP 重构“周边去哪儿”决策链路:我的真实踩坑与MVP落地复盘
人工智能·typescript·node.js
weixin_419658313 小时前
RabbitMQ 应用问题
java·分布式·中间件·rabbitmq
Aolith3 小时前
从前端模拟到全栈认证:我的论坛 JWT 实战复盘
node.js·express
z小天才b3 小时前
Django ORM、中间件与信号 — 完全指南
python·中间件·django
Rabbit_QL4 小时前
【前端基础】npm install 是干嘛的(带参数 vs 不带参数)
前端·npm·node.js
阿赛工作室4 小时前
node.js使用AES加密/解密的详细教程
node.js
fuquxiaoguang4 小时前
金蝶天燕AMDC:当企业级缓存遇见Redis 8.2,国产中间件的“性能+易用”双飞跃
redis·缓存·中间件
亚空间仓鼠4 小时前
Kubernetes技术入门与实践(三):构建高效中间件服务
中间件·容器·kubernetes