Firebase関数PT 2の開発-環境変数とHTTPメソッド


私は、ファイアウォール機能プロジェクトをどのように初期化するか、どのように展開するかを示しました.このレッスンでは、APIの環境変数の設定方法や、putやpostなどの他のHTTPメソッドの実行方法について説明します.

環境変数


APIを開発するときに環境変数を使用するのは一般的に良いことです.特に、ソースコードを管理したい場合は、データベースの資格情報などの機密情報を公開しないようにします.幸いなことに、FireBase関数は、関数の環境変数を取得して設定する簡単な方法を考慮します.
environment variableを設定するには、次のコードをコマンドラインから実行します.
$ firebase functions:config:set [scope].[value]="something"
たとえば、helloの範囲でmyvariableの値をtestという変数に割り当てたい場合は、次のコードを実行します
$ firebase functions:config:set test.myvariable="hello"
環境変数を取得するには、次のコードを実行します
$ firebase functions:config:get
これは、プロジェクトの環境変数を含むJSONオブジェクトを返します
{
  "test": {
    "myvariable": "hello"
  }
}
注意すべきことは、コマンドラインから環境変数を設定することで、いくつかのquirksを導入することができます.例えば、変数を「hello , world」に設定しようとすると我々は奇妙なエラーを得る
$ firebase functions:config:set test.myvariable="hello, world!"
bash: !": event not found
このエラーの理由は、感嘆符の文字がa special character to bashであるので、このエラーを回避するために、単一引用符で二重引用符を代入することができます
$ firebase functions:config:set test.myvariable='hello, world!'
では、環境変数を使用しましょう.前回のレッスンで書いたコードを復習しましょう.
const functions = require('firebase-functions');

// Create and Deploy Your First Cloud Functions
// https://firebase.google.com/docs/functions/write-firebase-functions

exports.helloWorld = functions.https.onRequest((request, response) => {
  functions.logger.info("Hello logs!", {structuredData: true});
  response.send("Hello from Firebase!");
});

応答の中で、設定したmyvariable環境変数を返しましょう.プロジェクト内のすべての環境変数を取得するには、我々のコード内でfunctions.config()を書き、変数へのパスを指定して環境変数にアクセスできます.myvariabletestのスコープの一部ですので、我々のコードはこのようになります
const functions = require('firebase-functions');

// Create and Deploy Your First Cloud Functions
// https://firebase.google.com/docs/functions/write-firebase-functions

exports.helloWorld = functions.https.onRequest((request, response) => {
  functions.logger.info("Hello logs!", {structuredData: true});
  response.send(functions.config().test.myvariable);
});

エミュレータを実行し、ブラウザから関数を表示するときにこの値を取得できるかどうかを確認します.
$ firebase emulators:start
ただし、HelloWorldのAPIエンドポイントを訪問すると、次のエラーが表示されます.

このエラーの理由は、環境変数が定義されていますが、エミュレータは環境変数を取得できません.エミュレータが環境変数を取得するには、環境変数のコピーを含むファイルを作成する必要があります.そのためには、次のスクリプトを実行します.
$ firebase functions:config:get > .runtimeconfig.json
このスクリプトは環境変数を.runtimeconfig.jsonというファイルに書きます.これはエミュレータが読むことができるファイルです.エミュレータを再起動し、環境変数を読み込むことができるかどうかを確認します.

環境変数を追加/更新するたびに、firebase functions:config:get > .runtimeconfig.jsonスクリプトを実行する必要があります.また、エミュレータが起動されると、RuntimeeConfigファイル内の値がキャッシュされますので、エミュレータを再起動する必要があります.
注意:runtimeconfig.JSONファイルには環境変数(そして、潜在的に機密情報)が含まれています.ジティノル
これはAPIによって設定され、検索された環境変数の取得に関する基礎をカバーしなければなりません.環境変数の詳細についてはFirebase's documentationを参照してください.今のところ、APIがちょうどGETの他にHTTPメソッドをサポートする方法に移りましょう.

HTTPメソッド


現在、我々のアプリケーションは、GET操作をサポートしています.ポストやプットなどのHTTPメソッドのサポートについてはどうですか?幸いにも、firebase関数はこれをサポートします.これを行うには、Expressルータを使用して操作を指定し、Hyper Router構成を受け入れるfunctions.https.onRequest()メソッドを使用できます.
以下を示すサンプルコードは、this StackOverflow postから借りられます
const functions = require('firebase-functions');
const express = require('express');
const cors = require('cors');
const app = express();

// Automatically allow cross-origin requests
app.use(cors({origin: true}));

// Defines my GET method at the helloWorld endpoint
app.get('/', (request, response) => {
  response.end('Here is my GET request!');
});

// Defines my POST method at the helloWorld endpoint and prints out an environment variable
app.post('/', (request, response) => {
  response.end('Here is my POST request! ' + functions.config().test.myvariable);
});

// Defines my PUT method at the helloWorld endpoint
app.put('/', (request, response) => {
  response.end('Here is my PUT request!');
});

// Expose Express API as a single Cloud Function
exports.helloWorld = functions.https.onRequest(app);

エミュレータを実行しているとき、ブラウザーのHelloWorldのAPIエンドポイントを訪問するとき、我々は'ここで私のGET要求ですメッセージ.

ポストエンドポイントをテストするには、コマンドラインツールを開き、curlを使用します.
$ curl -X POST http://localhost:5001/irbytestproject/us-central1/helloWorld
Here is my POST request! hello, world!
同様に、PUT終了点をテストします.
$ curl -X PUT http://localhost:5001/irbytestproject/us-central1/helloWorld
Here is my PUT request!

APIの配備


環境変数が設定され、複数のHTTPメソッドがサポートされているので、この関数をFirebaseに配備する準備が整いました.このレッスンの最初の部分からの通知として、FireBase機能を配備するコマンドを示します.
$ firebase deploy
展開が完了すると、curlを使用してPOSTエンドポイントをテストし、環境変数を正しく取得できるようにします.
$ curl -X POST https://us-central1-irbytestproject.cloudfunctions.net/helloWorld 
Here is my POST request! hello, world!
優れた!私たちのAPIは期待通りに動作しているようです.

結論


今のところ、これはfirebase関数を開発する上で基礎を包まなければなりません.ノードに慣れていない場合.JSまたはExpressは、私はchecking out this course by Maximilian Schwarzmüllerは、ノードのアプリケーションをMongoDBデータベースに接続し、APIコントローラを設定し、より多くをお勧めします.
あなたが記事を楽しんだ希望!