Node.jsを用いて、GETで送られてきた値をPOSTで外部サイトへ送信する仕組みを作りたいです。
- GETを受け取る
- GETで送られてきた値を取得
- 2で取得した値を外部サイトへPOSTで送る
<サイトAからGET送信をする>
var url = 'https://****.cloudfunctions.net/hello?name=' + user_id + '&email=' + email + '&action=Systemon'; // httpsモジュールでリクエストを送出 https.get(url, function(res) { // レスポンスを格納する空の変数を定義 var body = ''; res.setEncoding('utf8'); res.on('data', function(chunk) { // レスポンスボディーを変数に追加 body += chunk; }); res.on('end', function (res) { // レスポンスボディーはJSON形式なので、そこから氏名を取り出す var name = JSON.parse(body).name; var email = JSON.parse(body).email; var action = JSON.parse(body).action; self.emit(':ask', 'こんにちは、' + name + 'さん。あなたのメールアドレスは、' + email + 'です。' + action + 'を実行します。'); }); }).on('error', function(e) { self.emit(':tell', "通信に問題が発生しました"); });
<GETで送られてきた値を取得し、POSTとしてサイトBへ送る>
exports.hello = functions.https.onRequest((request, response) => { if (request.query.name !== undefined) { //----------------- var request = require('request'); var options = { uri: 'http://*****.com:3000', method: 'POST', headers: headers, json: true, form: {"hoge":"fuga"} }; request.post(options, function(error, response, body){ if (!error && response.statusCode == 200) { response.status(200).send(param); } else { response.status(404).send({ message: 'エラー' }); } }); //----------------- } else { response.status(200).send("NONE USER") } })
しかし、 <サイトAからGET送信をする>としばらく処理に時間がかかった後に
下記のようなエラーが吐き出され、タイムアウトしてしまいます。
Error: could not handle the request
何か良い方法はありますでしょうか。
アドバイス頂けましたら幸いです。
回答1件
あなたの回答
tips
プレビュー