REST 経由で Object Body を利用
この例では、REST API を使って外部サーバーを呼び出す処理と、Server Code 上で Object Body を扱う処理を示します。
Server Code では、jQuery を使って、外部のサーバーを呼び出すことができます。今回の例は、Kii Cloud 自身ですが、アクセスできるドメインに制限はないため、外部のサーバーに接続して、その結果から処理を行うこともできます。
また、現状の Server Code では、Object Body を利用する際に必要な Blob や FileReader をサポートしていないため、Server Code から Object Body を利用したい場合は REST API を使う必要があります。
この例では、bucketName
パラメータと、objectId
パラメータで指定された、アプリケーションスコープの Object にある Object Body を参照しています。取得した Object Body そのものは特に処理していません。
function parse_body(params, context, done) {
// Compose the URL of the published object body and get the administrator's token.
var appId = context.getAppID();
var appKey = context.getAppKey();
var adminToken = context.getAppAdminContext()._getToken();
var targetUrl = Kii.getBaseURL() + "/apps/" + appId + "/buckets/" + params.bucketName + "/objects/" + params.objectId + "/body";
$.ajax({
// Get the object body.
url: targetUrl,
type: "GET",
headers: {
"Accept": "*/*",
"Authorization": "Bearer " + adminToken
},
success: function(body) {
// Process the object body.
done("OK");
},
error: function(msg) {
done("NG:" + JSON.stringify(msg));
}
});
}
拡張のヒント
今回の例は HTTP GET を利用していますが、
$.ajax
のtype
を他のメソッドに変更することもできます。変更する際は、メソッド名の大文字小文字にご注意ください。たとえば、"Post" では正しく動作しません。REST のリクエストで JSON オブジェクトを渡したい場合、
$.ajax
のdata
(HTTP BODY 指定)では、JSON.stringify({"param" : "value"})
のようにstringfy()
メソッドを使用します。この例ではダウンロードの例をあげていますが、この例を参考にしてクライアントから渡されたデータをアップロードする処理を記述する場合は、Server Code に渡すパラメータのサイズに注意してください。パラメータ本体と Server Code を呼び出すためのメタ情報(50 バイト程度)を、合計 100KB 以内に収める必要があります。
Server Code を手動実行して別の Server Code を呼び出すことはできません。実行すると、HTTP ステータス 409 で "OPERATION_NOT_ALLOWED" エラーになります。
外部サーバーとの通信などで BASIC 認証が必要な場合、
Authorization
ヘッダーの出力部分を以下のように書き換えます。BASIC 認証のユーザー名とパスワードは Server Code の呼び出し元で Base64 エンコードして、base64token
パラメーターで渡す想定です。"Authorization": "Basic " + params.base64token