繁体   English   中英

未收到node.js POST回调

[英]node.js POST callbacks not received

我正在将json文件发布到node.js侦听器,并且我不能完全理解POST的正确构造方式,因为在on('data')回调下面的代码中从未调用过。 我可以在主体中看到实际的json字符串,因此可以解决缺少回调的问题,但是似乎我在生成POST请求的方式上做错了。 [邮递员详细资料,请参阅下文]

 // Server initialization var server = restify.createServer(); server.use(restify.queryParser()); server.use(CookieParser.parse); server.use(restify.bodyParser()); // Later, at the point where I register callbacks. this.server.post('receive', function (request, respond) { console.log('Received POST'); console.log("Headers: %s", JSON.stringify(request.headers)); console.log("Body: %s", JSON.stringify(request.body)); var body = '' ; var filePath = './data/notes.json'; // this event is never triggered. request.on('data', function (data) { console.log('Data received.'); body += data; }); request.on('end', function () { console.log('End of POST'); fs.writeFile(filePath, body, function () { respond.end(); }); }); }); 

POST详细信息:我正在使用Postman创建POST请求,内容类型:application / json并将json字符串放入原始正文中。 什么通常会触发POST请求中的“数据”事件? 如果我忽略数据事件并仅从请求正文中读取,是否会遇到问题?

有效负载详细信息

由于您正在使用restify.bodyParser ,因此该中间件已经读取了请求正文,因此您的处理程序不再需要读取任何内容(因此没有data事件)。 request这样的流只能被读取一次,直到耗尽为止。 您不能“重读”它。

这也意味着您可以只使用request.body ,这应该是您发布的JSON的(已解析)结果。

顺便说一句:我对Postman不太了解,但是看起来您正在向服务器发送JSON编码的字符串,而不是JSON编码的object

要发送后者,我希望这应该是原始数据:

{"body":"this is a test"}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM