Javascript 发布JSON w/node.js

Javascript 发布JSON w/node.js,javascript,json,node.js,post,Javascript,Json,Node.js,Post,我有两个node.js文件:client和server。服务器只侦听任何http请求,然后在收到请求对象时将其写入控制台。这与GET请求的预期效果一样。当我编写一个类似下面发布JSON的客户机时,它似乎工作得很好,只是在输出到服务器上控制台的请求中没有JSON 在服务器打印到控制台的输出中,存在所有其他特定于请求的内容,例如主机:“127.0.0.1”、url:“/some/path”、方法:“POST” 但是没有提到发布的任何JSON……用户名:'someUser',电子邮件:'some@em

我有两个node.js文件:client和server。服务器只侦听任何http请求,然后在收到请求对象时将其写入控制台。这与GET请求的预期效果一样。当我编写一个类似下面发布JSON的客户机时,它似乎工作得很好,只是在输出到服务器上控制台的请求中没有JSON

在服务器打印到控制台的输出中,存在所有其他特定于请求的内容,例如主机:“127.0.0.1”、url:“/some/path”、方法:“POST”

但是没有提到发布的任何JSON……用户名:'someUser',电子邮件:'some@email.com'姓'SomeFN',姓'SomeLN'

来自服务器的完整控制台输出为


您的服务器需要侦听请求上的“数据”事件以获取POST数据。http.server不处理请求的任何正文内容。这取决于你和解析它,就像你让客户端做的一样。如果你查看pastebin链接,我认为这就是你所说的可读流,你是对的,我可以轻松解析。问题是…我发布的JSON内容都不在该流中。或者我是否需要以某种方式调整服务器以捕获JSON?这是我的第一个节点项目,所以。。。。
//client
var http = require('http');

var user = {
  username: 'someUser',
  email: 'some@email.com',
  firstName: 'SomeFN',
  lastName: 'SomeLN'
};

var userString = JSON.stringify(user);

var headers = {
  'Content-Type': 'application/json',
  'Content-Length': userString.length
};

var options = {
  host: '127.0.0.1',
  port: 80,
  path: '/some/path',
  method: 'POST',
  headers: headers
};

// Setup the request.  The options parameter is
// the object we defined above.
var req = http.request(options, function(res) {
  res.setEncoding('utf-8');

  var responseString = '';

  res.on('data', function(data) {
    responseString += data;
  });

  res.on('end', function() {
    var resultObject = JSON.parse(responseString);
  });
});

req.on('error', function(e) {
  // TODO: handle error.
});

req.write(userString);
req.end();
//server
var http = require('http'); 
var stringify = require('json-stringify-safe'); 

http.createServer(function (req, res) { 
res.writeHead(200, {'Content-Type': 'text/plain'}); 
res.end(stringify(req, null, 2)); 
console.log(req)
}).listen(80, '127.0.0.1');