https GET要求で不完全なJSONを受け取ったRiot-Api Imの呼び出し。Node.jsでの不完全なJSON応答https-module
デバッグ後、実際に完全なJSONオブジェクトを受け取っている https on'data 'コールバックImを事前に実行して待っている(ブレークポイント)かどうかに応じて変化することがわかりました。
let getOptions = function(url) {
return {
host: 'na.api.pvp.net',
port: 443,
path: `${url}?api_key=${apiKey}`,
method: 'GET'
};
}
exports.Call = function(url, callback) {
let response = {};
let req = https.request(getOptions(url), function(res) {
response.statusCode = res.statusCode;
res.on('data', function(data) {
response.json = JSON.parse(data);
callback(response);
});
});
req.on('error', function(err) {
response.err = err;
callback(response);
});
req.end();
};
ブレークポイントなしでコードを実行するか、私だけがエラーにどちらかの実行短い時間を壊す(私のために平均APIの応答時間は200-300msがある):
JSON.parse(data): Unexpected Token in JSON at position ...
または
JSON.parse(data): Unexptected end of JSON Input.
リクエストが完了した後にのみ 'data'コールバックが実行されると期待しています。私はaboを混乱させました(人工的にそれを遅らせることなく)それを修正する方法。
のようなヘルパーライブラリを使用するrecommentでしょうか?データの 'JSON.parse'を取り除こうとしてください。 – Edgar
@Edgar私は元のバッファを元に戻し、ときにはJSONの書式設定に成功することさえあります。 –