配列からAPIエンドポイントを呼び出す際に問題があります。配列には、必要なデータを取得するためにエンドポイントにフィードするために必要な値が含まれています。私が抱えている問題は、JSONテキストを受け取るAPIコールからデータをログに記録するときです。しかし、テキストを解析してJSONテキストから特定の値を取得しようとすると、結果が得られません。ここで私は働いているコードです:何かがあれば配列nodejsから複数のapiエンドポイント呼び出しを作成する
var http = require("http");
var areaCodes = ["'0071950')", "'0072850')", "'0073450')", "'0075700')", "'0076450')", "'0078700')", "'0900001')", "'0900000')"];
var results = [];
var encode = [];
//source: http://stackoverflow.com/questions/17811827/get-a-json-via-http-request-in-nodej
for(var i = 0; i < areaCodes.length; i++){
var realmStatus = "http://api.dol.gov/V1/Statistics/OES/OE_SERIES/?KEY=XXXXXXXXXXXXXXXXXXXXXXXXXX&$filter=(OCCUPATION_CODE eq '151131') and (AREA_CODE eq " + areaCodes[i];
encode.push(encodeURI(realmStatus));
var options = {
host: 'api.dol.gov',
path: encode[i],
type: 'GET',
dataType: 'json',
headers: {'accept' : 'application/json'}
};
console.log("Start");
var x = http.request(options,function(res){
console.log("Connected");
var str = '';
res.on('data', function(chunk) {
str += chunk;
});
res.on('data',function(data){
if(res.statusCode == 200){
//console.log("res status is good");
try{
var dataA = JSON.parse(str);
//run a for loop
for(var h = 0; h < dataA.d.results.length; h++){
var seriesNum = dataA.d.results[h].SERIES_ID;
array.push(seriesNum);
console.log(seriesNum);
}
//end for
}catch(e){
console.log('Error parsing JSON');
}
}
});
});
x.end();
}//end for loop
誰かが説明ことをいとわない場合、私は間違っていたものがある場合、私は感謝したい、または私が行方不明です。ありがとう!
しかし、すばやい応答をいただきありがとうございますが動作しません。私は別のエンドポイントで同じコードを使用していて、うまく動作するので奇妙です。唯一の違いは、もう一方のエンドポイントでは、エンドポイントを連結する値を格納するために配列を使用しなかったことです。 – learningToCode
問題は、プログラムを実行すると「エラー解析JSON」という意味ですが、「試行」ブロックが実行されていないことを意味します。これは私の他のエンドポイントを呼び出すときには問題ではない – learningToCode
私は、その理由は、あなたが最初のものの直後に2番目の '' data''を呼んでいるからだと思います。ペイロードのサイズにもよりますが、JSON全体を1つのデータ(おそらく他のエンドポイントが動作する理由)に入れることができますが、このペイロードには複数の 'data'呼び出しが必要です。しかし、これを最初から呼び出しているので、おそらくJSONの半分しか持っていないので、エラーが発生します。 – samanime