我正在研究一個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