1. 首先要过滤掉get请求
根据req.method
判断请求方式,如果是get
,直接next()
即可
2. 如果是普通表单提交,要处理application/x-www-form-urlencoded
。如果有文件(图片,音视频…) 不处理multipart/form-data
。交给formData处理。
根据请求头req.headers['content-type']
判断文件类型
3. 该中间件应该挂载到所有的请求之前
4. 复杂文件不处理,直接返回next()
// 处理post请求export default (req, res, next) => {console.log(req.method.toLowerCase());// 1. 过滤get请求if (req.method.toLowerCase() === "get") {return next();}// 2. 如果是普通表单提交,要处理 application/x-www-form-urlencoded// 如果有文件(图片,音视频...) 不处理, multipart/form-dataif(req.headers['content-type'].startsWith('multipart/form-data')){return next();}}
5. 普通数据直接将数据流拼接,并将数据使用querystring中的parse方法转换为json格式
let data = '';req.on('data', (chunk)=>{data += chunk;});req.on('end', ()=>{// console.log(data);req.body = querystring.parse(data);next();});