虽然express方便好用,还是要了解中间件的运行思路
let querystring = require("querystring")
module.exports = {
urlencoded:(options)=>{
options = options || {}
options.limit = options.limit || 102400
return (req,res,next)=>{
let str = ""
//一次拼接一部分数据,data事件会频繁触发
req.on("data",chunk=>str+=chunk)
req.on("end",()=>{
if(str.length>options.limit){
throw new Error()
}else{
req.body = querystring.parse(str)
}
next()
})
}
}
}