投稿日:2019-04-28 Sun
Cloud Functionsで外部通信の必要が出てきました。予め断っておくと、FireBaseのCloud Functionsから外部へアクセスするには、従量制のBlazeプランにする必要があります。
無料のSparkプランや、有料のFlameプランでは使えないのでご注意を!
又Blazeプランでも、Sparkで間に合う範囲までの使い方だと、実質費用はかかりません。
Node.jsでは、どの方法が一般的なのだろうと思ってググったのですが
request(npm install request でnode_modulesへ追加)
request-promise(npm install request-promise でnode_modulesへ追加)
とか出てきて、実際便利です。
ただ、Cloud Functionsで既にrequestとかの命令や変数でアクセスしてる訳だし、requestとかインストールしなくても動くのかなと思いつつ、動かないのでnpm install requestしてしまって、失敗。
なんか今まで作ったプログラムが動かなくなってしまいました。(自分のやり方が悪いだけかもしれませんが・・。 それに入れたばっかの最初は動いてたんですよね)
仕方ないので、 firebase init で構築し直し。 他に方法ないのかなと思ったのですがありました。
まずはGet通信から。 Getは
const https = require('https'); を使い、https命令で行います。
こんな感じです。
こう書いてもいいようです。
次にPOST通信、 一般的なformのPost通信でuser_name という変数に値(この例ではadmin)を入れておくる場合は
こんな感じになります。
json形式で送る例は、割とよく出てくるのですが、普通にformで送りたかったので苦戦した。
'Content-Type':'application/json' を 'Content-Type': 'application/x-www-form-urlencoded' にするだけだし、こんなのすぐ分かれよって気もしますが、私は元々(というか今も)Webエンジニアではないので、こういうところは直ぐピンとこない。
結局海外サイトでヒントをみつけました。
json.stringify ならぬ、querystring.stringify ってのも出てきました。
これは一体なんだ! と思ったのですが、これはぐぐると直ぐ出てきます。
とりあえず無事Cloud FunctionsでPOST通信が出来るようになりました。
△ PAGE UP