Nodejs -- Express 中间件的分类
创始人
2024-02-25 12:05:18
0

文章目录

    • 中间件的分类
      • 1 应用级别的中间件
      • 2 路由级别的中间件
      • 3 错误级别的中间件
      • 4 Express内置的中间件
      • 5 第三方中间件

中间件的分类

为了方便大家理解和记忆中间件的使用,Express官方把常见的中间件用法,分成了5大类,分别是:

  • 应用级别的中间件
  • 路由级别的中间件
  • 错误级别的中间件
  • Express内置的中间件
  • 第三方的中间件

1 应用级别的中间件

通过app.use()app.get()app.post(),绑定到app实例上的中间件,叫做应用级别的中间件,代码示例如下:

只要是直接通过app.xxx调用的,都可以理解为是应用级别的中间件

// 应用级别的中间件(全局中间件)
app.use((req, res, next) => {console.log("这是中间件函数")next()
})// 应用级别的中间件(局部中间件)
app.get("/user", mw, (req, res) => {res.send('success')
})

2 路由级别的中间件

绑定到express.Router()实例上的中间件,叫做路由级别的中间件。它的用法和应用级别中间件没有任何区别。只不过,应用级别中间件是绑定到app实例上,路由级别中间件绑定到router实例上,代码示例如下:

const express = require("express")
const router = express.Router()// 路由级别的中间件
router.use((req, res, next) => {console.log("Time: ", Date.now())next()
})module.exports = router

3 错误级别的中间件

错误级别中间件的作用:专门用来捕获整个项目中发生的异常错误,从而防止项目异常崩溃的问题。

格式:错误级别中间件的function处理函数中,必须有4个形参,形参顺序从前到后,分别是(err, req, res, next)

// 路由
app.get("/user", (req, res) => {throw new Error("服务器内部发生了错误!")res.send("Home Page")
})// 错误级别的中间件,捕获整个项目的异常错误
app.use((err, req, res, next) => {console.log("Error: " + err.message)res.send("Error: " + err.message)
})

错误级别的中间件,必须注册在所有路由之后,如果放在前面会导致在该中间件之后的错误无法被捕获

4 Express内置的中间件

自Express4.16.0版本开始,Express内置了3个常用的中间件,极大的提高了Express项目的开发效率和体验:

  • express.static快速托管静态资源的内置中间件,例如:HTML文件、图片、CSS样式等(无兼容性)
  • express.json解析SON格式的请求体数据(有兼容性,仅在4.16.0+版本中可用)
  • express.urlencoded解析URL-encoded格式的请求体数据(有兼容性,仅在4.16.0+版本中可用)
// 配置解析 application/json 格式数据的内置中间件
app.use(express.json())// 配置解析 application/x-www-form-urlencoded 格式数据的内置中间件
app.use(express.urlencoded({ extended: false }))app.post('/user', (req, res)=>{// 在服务器, 可以使用 req.body 这个属性,来接受客户端端发过来的请求体数据// 在默认情况下,如果把配置解析表单数据的中间价, 则 req.body 默认等于 undefinedconsole.log(req.body)res.send('ok')
})

除了错误级别的中间件,其他的中间件,必须在路由之前进行配置

5 第三方中间件

非Express官方内置的,而是由第三方开发出来的中间件,叫做第三方中间件。在项目中,大家可以按需下载并配置第三方中间件,从而提高项目的开发效率。

例如:在express@4.16.0之前的版本中,经常使用body-parser这个第三方中间件,来解析请求体数据。使用步骤如下:

  • 运行npm install body-parser安装中间件
  • 使用require导入中间件
  • 调用app.use()注册并使用中间件

Express内置的express…urlencoded中间件,就是基于body~parser这个第三方中间件进一步封装出来的。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...