我正在研究一个Node.JS项目,我正在尝试向API发出一个HTTP请求。我试图调试这个代码,并不知道为什么'responseData'没有被设置。这个HTTP代码为什么不返回任何数据?
var responseData = "initial";
var options = {
hostname:'api.insight.ly',
path: '/v2.1/contacts',
headers: {
'Authorization': 'Basic (API key here)',
'Accept-Encoding': 'gzip'
}
};
http.get(options, (response) => {
const statusCode = response.statusCode;
let error;
if (statusCode !== 200) {
error = new Error('Request Failed.\n' +
`Status Code: ${statusCode}`);
}
if (error) {
responseData = "ERROR";
// consume response data to free up memory
response.resume();
return;
}
response.setEncoding('utf8');
let rawData = '';
response.on('data', (chunk) => rawData += chunk);
response.on('end',() => {
try {
const parsedData = JSON.parse(rawData);
responseData = parsedData
} catch (e) {
responseData = e.message;
}
});
}).on('error', (e) => {
responseData = (`Got error: ${e.message}`);
});
response.end(responseData);
我相信我已经处理了每一个错误的情况下,无论如何,responseData应该成为一个错误或JSON数据。但是,在此功能responseData
的最后是初始。我错过了什么?
因为'http.get'是一个异步调用 - 在'http.get'回调中移动'response.end'。 – tymeJV