FC2ブログ
 
■プロフィール

クリエイトウェーブ

Author:クリエイトウェーブ
開発における、諸々を書いていきたいなと思っています。
mail : info@createwave.jp

■最近の記事
■カテゴリー
■最近のコメント
■月別アーカイブ
■最近のトラックバック
■ブログ内検索

■RSSフィード
■リンク
Cloud FunctionsでPost通信
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通信が出来るようになりました。

カテゴリー:FireBase | TM(0) | CM(0)

FC2Ad