2017-08-09 20 views
0

以下のコードは、Lambdaの「Got response:301」を返します。私はPHP、Python、そして今はNodeでこのコードを試してみました。このリンクをブラウザに貼り付けると、この図のようにJSONデータが返されます。同じデータを印刷するコードを取得するにはどうすればよいですか?私はデータをMongoに入れることになります。私はラムダではなく、ローカルでデータを印刷するためにPHPとPythonを手に入れることができます。AWS Lambda NodeJS HTTPリクエスト、APIからのデータの出力

私はそれがthe callback() shown hereと関係があり、それを実装しようとしていると思います。

enter image description here

var http = require('http'); 
var url = 'http://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=MSFT&interval=1min&apikey=demo'; 
exports.handler = function (event, context) { 
http.get(url, function(res) { 
    console.log("Got response: " + res.statusCode); 

    res.on("data", function(chunk) { 
    console.log("BODY: " + chunk); 
    }); 
}).on('error', function(e) { 
    console.log("Got error: " + e.message); 
}); 
}; 

私はにコードを更新:

var http = require('http'); 
var url = 'http://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=MSFT&interval=1min&apikey=demo'; 
exports.handler = function (event, context) { 
http.get(url, function(res) { 
     var data = ''; 
     res.on('data', (chunk) => { data += chunk; }); 
     res.on('end',() => { console.log("BODY: " + data); }); 
    }).on('error', (e) => { console.log("Got error: " + e.message);}); 
}; 

そして、この応答を得た:

START RequestId: 19a21615-7d09-11e7-93cc-cb3212ad23c5 Version: $LATEST 2017-08-09T13:46:10.102Z 19a21615-7d09-11e7-93cc-cb3212ad23c5 BODY: END RequestId: 19a21615-7d09-11e7-93cc-cb3212ad23c5 REPORT RequestId: 19a21615-7d09-11e7-93cc-cb3212ad23c5 Duration: 277.04 ms Billed Duration: 300 ms  Memory Size: 128 MB Max Memory Used: 19 MB 
+0

有効な 'User-Agent'ヘッダーを送信する必要があります。ブラウザは自動的に行いますが、ノードは自動的に行いません。あなたが使用していたPHPとPythonのライブラリが送信している可能性があります。ノード用のライブラリもあります。 –

答えて

3

すべてのデータにあなたを印刷するために、チャンクで受信したデータ'終わり'のイベントを聞いてそれを記録する必要があります。チャンクを各データイベントに追加して、終了イベントが受信したときにすべてのデータをログに記録してください。

var https = require('https'); 
var url = 'https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=MSFT&interval=1min&apikey=demo'; 
exports.handler = function (event, context) { 
https.get(url, function(res) { 
    var data = ''; 
    res.on('data', (chunk) => { data += chunk; }); 
    res.on('end',() => { console.log("BODY: " + data); }); 
    }).on('error', (e) => { console.log("Got error: " + e.message);}); 
}; 
+0

ありがとうございますが、それでもデータは表示されません。私はそれがラムダ関数の中にあることと関係があると思う。あなたのコードとその出力を含めるように質問を編集しました。 –

+1

httpをhttpsに変更してくれました。あなたの私のヒーローです。 –

+0

あなたは私の英雄です。私は数週間これをやってきました。ありがとうございました。 –

関連する問題