5.3. Node.js 関数の呼び出しについて
Knative (kn
) CLI を使用して関数プロジェクトを作成する場合に、CloudEvents に応答するプロジェクト、または単純な HTTP 要求に応答するプロジェクトを生成できます。Knative の CloudEvents は HTTP 経由で POST 要求として転送されるため、関数タイプはいずれも受信 HTTP イベントをリッスンして応答します。
Node.js 関数は、単純な HTTP 要求で呼び出すことができます。受信要求を受け取ると、関数は context
オブジェクトで最初のパラメーターとして呼び出されます。
5.3.1. Node.js コンテキストオブジェクト
関数は、context
オブジェクトを最初のパラメーターとして渡して呼び出されます。このオブジェクトは、受信 HTTP 要求情報へのアクセスを提供します。
コンテキストオブジェクトの例
function handle(context, data)
この情報には、HTTP リクエストメソッド、リクエストと共に送信されたクエリー文字列またはヘッダー、HTTP バージョン、およびリクエスト本文が含まれます。CloudEvent
の受信インスタンスが含まれる受信要求はコンテキストオブジェクトにアタッチし、context.cloudevent
を使用してアクセスできるようにします。
5.3.1.1. コンテキストオブジェクトメソッド
context
オブジェクトには、データの値を受け入れ、CloudEvent を返す cloudEventResponse()
メソッドが 1 つあります。
Knative システムでは、サービスとしてデプロイされた関数が CloudEvent を送信するイベントブローカーによって呼び出される場合に、ブローカーが応答を確認します。応答が CloudEvent の場合、このイベントはブローカーによって処理されます。
コンテキストオブジェクトメソッドの例
// Expects to receive a CloudEvent with customer data function handle(context, customer) { // process the customer const processed = handle(customer); return context.cloudEventResponse(customer) .source('/handle') .type('fn.process.customer') .response(); }
5.3.1.2. CloudEvent data
受信要求が CloudEvent の場合は、CloudEvent に関連付けられたデータがすべてイベントから抽出され、2 番目のパラメーターとして提供されます。たとえば、以下のように data プロパティーに JSON 文字列が含まれる CloudEvent が受信されると、以下のようになります。
{ "customerId": "0123456", "productId": "6543210" }
呼び出されると、context
オブジェクトの後の関数の 2 番目のパラメーターは、customerId
プロパティーと productId
プロパティーを持つ JavaScript オブジェクトになります。
署名の例
function handle(context, data)
この例の data
パラメーターは、customerId
および productId
プロパティーが含まれる JavaScript オブジェクトです。