自定义中间件:
// 导入express模块
const express = require('express')
// 创建express的服务器实例
const app = express()
// 1. 导入自己封装的中间件模块
const customBodyParser = require('./017-custom-body-parser')
// 2. 将自定义的中间件函数,注册为全局可用的中间件
app.use(customBodyParser)
app.post('/user', (req, res) => {
res.send(req.body)
})
// 导入Node.js内置的querystring模块
const qs = require('querystring')
// 解析表单数据的中间件
app.use((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)
// 调用qs.parse() 方法 把查询字符串解析为对象格式
const body = qs.parse(str)
req.body = body
next()
})
})
app.post('/user', (req, res) => {
res.send(req.body)
})
// 调用app.listen方法,指定端口号并启动web服务器
app.listen(80, () => {
console.log("running http://127.2.1.1")
})