[英]http request get body
我是node的初學者,所以如果這個問題太明顯,請原諒。 我也嘗試了官方文檔,但可以解決此問題。
我的節點服務器正在通過服務與外部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並將其記錄在控制台中。 但是我想將返回的json存儲在一個變量中,以便可以傳遞next()回調。
我試圖將回調添加到結束事件,例如:
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);
});
}
先感謝您。
您代碼中的回調名稱應為“ 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();
}
然后,您應該像這樣使用函數:
searchNear(myLong, myLat, function (err, mesg) {
console.log('your JSON: ', mesg)
});
我可能會誤解您的問題,但顯而易見的解決方案是將已解析的json存儲在變量中,然后將變量傳遞給next()
var parsed = JSON.parse(msg);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.