自定义中间件封装为模块

自定义中间件为模块代码如下:

// custom-body-parser.js

const qs = require('querystring')

const bodyParser = (req, res, next) => {
  // 定义中间价具体的业务逻辑
  // 1. 定义一个 str 字符串,专门用来存储客户端发送过来的请求体数据
  let str = ''
  // 2. 监听 req 的 data 事件
  req.on('data', (chunk) => {
    str += chunk
  })

  // 3. 监听 req 的 end 事件
  req.on('end', () => {
    // 在 str 中存放的是完整的请求体数据
    console.log(str)
    // 将字符串格式的请求体数据,解析成对象
    // 5. 调用 qs.parse() 方法,将查询字符串解析成对象
    const body =  qs.parse(str)

    // 6. 将解析出来的数据对象挂载为 req.body 属性
    req.body = body
    next()
  })
}

module.exports = bodyParser

 

posted @ 2020-08-24 21:30  彬戈戎马  阅读(119)  评论(0编辑  收藏  举报