[英]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.