[Express]中间件监听不同事件

监听req的data事件

在中间件中,需要监听req对象的data事件,来获取客户端发送到服务器的数据。
如果数据量比较大,无法一次性发送完毕,则客户端会把数据切割后,分批发送到服务器。
所以data事件可能会触发多次,每一次触发data事件时,获取到数据只是完整数据的一部分,需要手动对接收到的数据进行拼接。
//导入express 模块
const express= require('express')
//创建express 的服务器实例
const app = express()
//这是解析表单数据的中间件
app.use((req,res,next)=>{
    //定义中间件具体的业务逻辑
    //1.定义一个 str字符串,专门用来存储客户端发送过来的请求体数据
    let str=''
    req.on('data',(chunk)=>{
        str +=chunk
    })
})

//调用 app.listen方法,指定端口号并启动web服务器
app.listen(80,()=>{
    console.log('express server running at http://127.0.0.1')
})

 

监听req的end事件

当请求体数据接收完毕之后,会自动触发req的end事件。
因此,我们可以在req的end事件中,拿到并处理完整的请求体数据。

//导入express 模块
const express= require('express')
//创建express 的服务器实例
const app = express()
//这是解析表单数据的中间件
app.use((req,res,next)=>{
    //定义中间件具体的业务逻辑
    //1.定义一个 str字符串,专门用来存储客户端发送过来的请求体数据
    let str=''
    req.on('data',(chunk)=>{
        str +=chunk
    })
    req.on('end',()=>{
        //在str中存放的是完整的请求体数据
        console.log(str)
        ///TODO:把字符串格式的请求体数据,解析成对象格式
    })
})

//调用 app.listen方法,指定端口号并启动web服务器
app.listen(80,()=>{
    console.log('express server running at http://127.0.0.1')
})

 

posted @ 2024-02-01 14:13  夕苜19  阅读(50)  评论(0编辑  收藏  举报