【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
      • 价值;副高高频需求、成熟可靠
相关推荐
用户15583199681413 小时前
用Node写一个文件同步CLI工具
node.js
李白的天不白17 小时前
webpack 压缩文件
前端·webpack·node.js
喵了几个咪17 小时前
Kratos 生态双定时器中间件:高精度 hptimer 与标准 cron 选型与实践
微服务·中间件·架构·golang·kratos
zzzzzz31018 小时前
AI Agent 开发实战:从零构建智能代码助手
react.js·node.js
lifewange19 小时前
常用中间件压力测试命令(极简速查)
中间件·压力测试
donecoding20 小时前
用了多年 nvm,我终于找到 Python 的版本管理「答案」:uv
python·node.js·前端工程化
南城雨落20 小时前
uni-app开发经验分享-跨端开发经验总结
javascript·vue.js·node.js
喵了几个咪21 小时前
Kratos KCP 传输中间件:游戏开发低延迟网络通信实战指南
微服务·中间件·golang·游戏开发·kratos
喵了几个咪1 天前
Kratos WebRTC 传输中间件:H5游戏P2P实时音视频与数据通信实战
游戏·微服务·中间件·golang·webrtc·实时音视频·kratos
许彰午2 天前
Tomcat漏洞修复升级——被遗忘的中间件安全
安全·中间件·tomcat