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 に格納されます。