READMENode.js请求body中间件。将客户端请求的内容解析并存储在req.body上。了解Node.js中HTTP事务的剖析。body-parser不处理上传附件(多部分正文)的分析。如果想学习上传附件的中间件,需要查看:multipartyconnect-multiparty先简单分析一下bodyParser.json:bodyParser.json([options])调用这个函数返回处理Content-Type的中间件:application/json.Optionsinflate设置为true时,压缩的请求体将被解压。如果设置为false,压缩后的请求体将被拒绝,返回415DataFormatParsingError。limit控制请求体的最大大小,默认为100kb。当它是数字时,它将被转换为字节。当是字符串时,value值会通过bytes转换为bytes。Reviver该选项将通过JSON.parse直接传递给它的第二个参数。MDNJSON.parsestrict默认为true。当为真时,只接受数组和对象。如果为假,则接受任何JSON.parse可以接受的内容。type该参数用于设置指定MIME类型的数据使用当前的解析中间件。参数可以是函数或字符串。如果是字符串,则使用type-is查找MIMI类型;如果是函数,中间件会通过fn(req)获取实际值。默认为应用程序/json。例如,//对文本/纯内容类型使用JSON解析:app.use(bodyParser.json({type:'text/plain'}))//将HTML请求正文处理为字符串app.use(bodyParser.text({type:'text/html'}))verify验证参数本身用于验证请求。当验证失败时,body-parser的解析动作通过抛出错误来终止,这里借用它来实现post参数rawbody的获取。app.use(bodyParser.json({verify:function(req,res,buf,encoding){req.rawBody=buf;}}));Demovarexpress=require('express')varbodyParser=require('body-parser')varapp=express()//解析应用程序/x-www-form-urlencodedapp.use(bodyParser.urlencoded({extended:false}))//解析应用程序/jsonapp.use(bodyParser.json())app.use(function(req,res){res.setHeader('Content-Type','text/plain')res.write('youposted:\n')res.end(JSON.stringify(req.body,null,2))})结构参考node官网-zlibgithub-body-parsergithistory-body-parser/json.jsgithistory-read.jshttps://segmentfault.com/a/11...
