5.4. カスタムAPIの実行

ここまでの手続きでCloud Functionsを実行できる環境が整いました。 実際にCloud Functionsを実行してみます。

5.4.1. curl によるカスタム API の実行

curl コマンドを使用してカスタム API を呼び出します。

$ curl -X GET \
  -H "X-Application-Id: {appId}" \
  -H "X-Application-Key: {appKey}" \
  https://{server}/api/1/{tenantId}/api/hello/sayHello?name=Taro_Nichiden

応答として {"message": "Hello world, Taro_Nichiden!!" } が表示されれば正常に動作しています。

5.4.2. JavaScript SDK からのカスタム API の実行

JavaScript SDK からカスタム API を実行することができます。 (JS SDK v6.0.0 以上が必要です)。

以下に例を示します。

// カスタムAPIインスタンスを生成する
var sayHello = new Nebula.CustomApi("hello", "GET", "sayHello");

// APIを呼び出す
sayHello.execute({name: "Taro_Nichiden"}).then(function (result) {
    result = JSON.parse(result);
    console.log(result.message);
});

API呼び出し結果はテキストで引き渡されます。 JSON に変換する場合は JSON.parse() を行ってください。

バイナリレスポンスの受信

レスポンスをテキストではなくバイナリで受け取りたい場合は、以下のように setBinaryResponse() を呼び出してください。 結果は Blob (ブラウザの場合) または Buffer (Node.jsの場合) で渡されます。

// カスタムAPIインスタンスを生成する
var sayHello = new Nebula.CustomApi("hello", "GET", "sayHello").setBinaryResponse();

// APIを呼び出す
sayHello.execute({name: "Taro_Nichiden"})
    .then(function (result) {
        // result は Blob または Buffer
    })
    .catch(function (err) {
        // エラー時の処理
    });

注意

ブラウザでバイナリでデータを受け取る場合、エラー発生時はステータスコードのみが取得可能です。 (ステータステキストやレスポンステキストは取得不可)。これは XHR (XMLHttpRequest) の制限です。

Node.js でバイナリデータを受け取る場合、エラー発生時はレスポンスボディは err.data に格納されます。