【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
      • 价值;副高高频需求、成熟可靠
相关推荐
特立独行的猫a4 小时前
ROS 2 主流DDS中间件入门:Cyclone DDS 与 Fast DDS 完全指南
中间件·ros2·dds·fast dds·cyclone dds
小易老师AI实战6 小时前
用中间件把任务规划嵌进智能体循环
中间件·状态管理·智能体·工具调用·langgraph·任务规划
YIAN10 小时前
RAG 学到最后,我真正学会的不是“检索”,而是让系统知道自己缺什么
langchain·node.js·llm
用户119770794807310 小时前
GitHub 电商开源项目分享:用 sharp 批量出饰品主图,试了裁剪、细节图和色彩配置文件三个坑
前端·node.js
donecoding10 小时前
pnpm 配好了,为什么执行的还是另一份?命令入口与运行时排查
node.js·前端工程化
江屿风10 小时前
【Plain Language Large Model】【从浏览器到全栈:一课精通Node.js三剑客】流食般投喂
笔记·前端框架·npm·node.js·js·npx
SomeOtherTime14 小时前
node.js基础(AI回答)
node.js
绿蕉1 天前
从硬件内卷到“中间件荒“——仿真工具、开发接口、开源生态
中间件·机器人
小易老师AI实战1 天前
LangGraph Agent 任务规划中间件:TodoListMiddleware 原理解析
中间件·agent·langgraph·任务规划·大模型智能体
雨季mo浅忆1 天前
记录Node.js安全漏洞及其内置Brotli解码器问题
node.js·安全性测试