http请求获取正文

如果这个问题太明显,我是一个初学者,所以请原谅。 另外我尝试了官方文档,但我可以解决这个问题。

我的节点服务器通过服务与外部API进行通信。

这是我到目前为止在我的服务api-service.js:

var http = require('http'); exports.searchNear = function(lat, long, next){ var options = { host: '1xx.xx.1xx.1x', path: '/api/v1/geo, method: 'GET' }; var req = http.request(options, function(res) { var msg = ''; res.setEncoding('utf8'); res.on('data', function(chunk) { msg += chunk; }); res.on('end', function() { console.log(JSON.parse(msg)); }); }); req.on('error', function(err) { // Handle error }); req.write('data'); req.end(); var mis = 'hello'; next(null, mis); 

}

在这一刻,我可以得到Json并将其login到控制台中。 但是我想将返回的json存储在一个variables中,所以我可以传入next()callback函数。

我试图添加一个callback到结束事件,如:

  exports.searchNear = function(lat, long, next){ .... ..... var req = http.request(options, function(res) { ..... res.on('end', function(callback) { console.log(JSON.parse(msg)); callback(msg); }); }); .... req.end('', function(red){ console.log(red); }); } 

先谢谢你。

代码中的callback名称应该是“next”:

 var http = require('http'); exports.searchNear = function(lat, long, next) { var options = { host: '1xx.xx.1xx.1x', path: '/api/v1/geo, method: 'GET' }; var req = http.request(options, function(res) { var msg = ''; res.setEncoding('utf8'); res.on('data', function(chunk) { msg += chunk; }); res.on('end', function() { console.log(JSON.parse(msg)); next(null, msg); }); }); req.on('error', function(err) { // Handle error }); req.write('data'); req.end(); } 

然后你应该像这样使用你的function:

 searchNear(myLong, myLat, function (err, mesg) { console.log('your JSON: ', mesg) }); 

我可能会误解你的问题,但显而易见的解决scheme是将parsing的json存储在一个variables中,并将variables传递给next()

 var parsed = JSON.parse(msg);