千家信息网

Node中如何使用Express中间件

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本文小编为大家详细介绍"Node中如何使用Express中间件",内容详细,步骤清晰,细节处理妥当,希望这篇"Node中如何使用Express中间件"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入
千家信息网最后更新 2026年11月03日Node中如何使用Express中间件

本文小编为大家详细介绍"Node中如何使用Express中间件",内容详细,步骤清晰,细节处理妥当,希望这篇"Node中如何使用Express中间件"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、什么是Express中间件

中间件特指业务流程的中间处理环节。

二、Express中间件的调用流程

当一个请求到达Express 的服务器之后,可以连续调用多个中间件,从而对这次请求进行预处理。

三、中间件格式

本质上就是function处理函数

注意:中间件函数的形参列表中,必须包含next参数。而路由处理函数中只包含req和res,

// next参数必须在最后一个传入const mw = (req, res, next) => {    ...    // next()必须在最后调用    next()}

四、next()函数的作用

next函数是实现多个中间件连续调用的关键,它表示把流转关系转交给下一个中间件或路由。

五、全局生效的中间件

客户端发起的任何请求,到达服务器之后,都会触发的中间件,叫做全局生效的中间件。 通过调用server.use(中间件函数),即可定义一个全局生效的中间件,示例代码如下:

const mw = (req, res, next) => {    next()}const mw1 = (req, res, next) => {    next()}// 全局生效的中间件,中间件调用顺序以传入顺序为准server.use(mw,mw1)

六、局部生效的中间件

局部中间件只在某一个指定的路由路径生效

const mw = (req, res, next) => {    next()}const mw1 = (req, res, next) => {    next()}// 局部生效的中间件server.get('/',mw,(req,res)=>{    res.send('路径:/')})// 定义多个局部生效的中间件// 1、直接逗号分隔server.get('/',mw,mw1,(req,res)=>{    res.send('路径:/')})// 2、或者使用数组包含server.get('/',[mw,mw1],(req,res)=>{    res.send('路径:/')})

七、中间件的作用

多个中间件之间,共享同一份req和res。基于这样的特性,我们可以在上游的中间件中,统一为req或 res对象添加自定义的属性或方法,供下游的中间件或路由进行使用。

const mw = (req, res, next) => {    // 添加属性    req.startTime=new Date()    next()}

八、Express中间件的五个注意点

  • 一定要在路由之前注册中间件

  • 客户端发送过来的请求,可以连续调用多个中间件进行处理

  • 执行完中间件的业务代码之后,不要忘记调用next()函数

  • 为了防止代码逻辑混乱,调用next()函数后不要再写额外的代码

  • 连续调用多个中间件时,多个中间件之间,共享req和res对象

九、Express中间件的分类

  • 应用级别的中间件

  • 路由级别的中间件

  • 错误级别的中间件

  • Express内置的中间件

  • 第三方的中间件

详细介绍:

  • 应用级别的中间件

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

    // 全局生效的中间件(应用级别的中间件)server.use(mw,mw1)// 局部生效的中间件(应用级别的中间件)server.get('/',mw,mw1,(req,res)=>{    res.send(`请求进入服务器的时间:${req.startTime}`)})
  • 路由级别的中间件

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

    const router = require('./router/router')// 路由级别的中间件router.use((req,res,next)=>{    next()})
  • 错误级别的中间件

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

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

    注意:错误级别的中间件,必须注册在所有路由之后!

    // 人为制造错误server.get('/err', (req, res) => {    throw new Error('人为抛出错误!!!')    res.send('err Page')})// 定义错误级别的中间件server.use((err, req, res, next) => {    console.log('发生了错误:' + err.message);    res.send('Error:'+err.message)    next()})
  • Express内置的中间件

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

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

    • express.json解析JSON格式的请求体数据(有兼容性,仅在4.16.0+版本中可用)

    • express.urlencoded解析URL-encoded格式的请求体数据(有兼容性,仅在4.16.0+版本中可用)

  • 第三方的中间件

    非Express官方内置的,而是由第三方开发出来的中间件,叫做第三方中间件。在项目中,大家可以按需下载并配置第三方中间件,从而提高项目的开发效率。 例如:在express@4.16.0之前的版本中,经常使用body-parser这个第三方中间件,来解析请求体数据。使用步骤如下:

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

    • 运行npm install body-parser安装中间件

    • 使用require导入中间件

    • 调用server.use()注册并使用中间件

读到这里,这篇"Node中如何使用Express中间件"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

中间件 级别 路由 错误 函数 多个 数据 第三方 应用 代码 格式 处理 全局 局部 项目 实例 服务器 版本 路径 服务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会主任 深圳恒合互联网络科技有限公司 互联网下的科技发展 互联网金融 科技 无锡溥仪互联网科技有限公司 开启互联网科技时代小说 广州慧亚互联网科技怎么样 成都互联网科技公司100强 贵州叶脉互联网科技有限公司所属行业 互联网还是高科技吗 崇明区互联网教育科技诚信经营 坤平互联网科技 深圳市优智互联网科技有限公司 迪庆互联网科技招生 雨阳互联网卡科技有限公司 银行科技岗属于互联网吗 西安左小互联网科技有限公司 互联网时代高科技布局 长沙易易互联网科技有限公司 科技发展第三阶段互联网时代 南京欣网互联网络科技 互联网和科技技术 互联网科技小贷 互联网高科技企业 上海宁丞科技互联网 崇明区互联网教育科技售后服务 互联网新科技动漫ppt素材 云南省自由互联网科技有限公司 江苏互联网科技小贷 2021世界互联网领先科技成果发布
0