0%

自定义表单中间件

1
2
3
4
5
6
7
8
9
10
11
12
13
const express=require('express')
//创建web服务器实例
const app=express()
//导入处理查询字符串的querystring,通过这个模块提供的parse()函数,可以查询字符串,解析成对象的格式
//const qs=require('querystring')
const customBodyParser=require('./custom-body-parser')
app.use(customBodyParser)
app.post('/user',(req,res)=>{
res.send(req.body)
})
app.listen(80,()=>{
console.log('express server running at http://127.0.0.1')
})

customBodyParser.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const qs=require('querystring')
const bodyParser=(req,res,next)=>{
//1 定义一个str字符串,专门用来存储客户端发送过来的请求体数据
let str=""
//监听req的data事件
req.on('data',(chunk)=>{
str+=chunk
})
//监听req的end事件
req.on('end',()=>{
//在str存放的是完整的请求体数据,解析成对象格式 调用qs.parse()方法,把查询字符串解析为对象
const body=qs.parse(str)
req.body=body//将解析处的请求体数据挂载为req.body
next()
})
}
module.exports=bodyParser