如何在不使用正文解析器的情况下获取POST正文

时间:2018-08-03 20:49:26

标签: javascript express stream body-parser

module.exports=function(app){
//app is passed in from app.js
//app is a express application


var data=[
   {item:"cheese"},{item:"milk"},{item:"strawberrys"}
 ]
app.get('/todo',function(req, res){
   res.render('todo',{data:data});
});
app.post('/todo',function(req, res){
var data="";
req.on('data', function(chunk){
   data+=chunk;
 });
req.on('end', function(){
    console.log(data);
  })
 });
 }

关于上面的代码,有几个问题,“数据”是您可以在其上设置流并且块函数以块为单位返回流的事件吗?同样,当我打印出“结束”事件中的数据时,当它是我通过的对象时,它给了我item = eggs的信息是{item:“ eggs”}。为什么没有给我对象?同样在“数据”事件中,它以字节缓冲区返回它,但是在“结束”事件中,它作为对象返回?

1 个答案:

答案 0 :(得分:0)

这取决于post内容类型

如果您使用content-type: application/json进行发布,它将显示JSON数据。 示例:

POST /todo HTTP/1.1
Host: localhost:8080
Content-Type: application/json

{"key":"value"}

如果您使用content-type: application/x-www-form-urlencoded进行发布,则会显示key1=value1&key2=value2等。 如果您不使用application/json,则请求将如下所示。

示例:

POST /todo HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded

key=value