Object の作成

ユーザースコープに存在する "mydata" Bucket 内に Object を作成する例を以下に示します。

curl -v -X POST \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/vnd.{APP_ID}.mydata+json" \
  "https://api-jp.kii.com/api/apps/{APP_ID}/users/me/buckets/{BUCKET_ID}/objects" \
  -d '{"score": 1800, "name": "game1"}'

Object のメディアタイプには "application/json" か "application/vnd.{APP_ID}.{DATA_TYPE}" が指定できます。後者の場合、{DATA_TYPE} には任意の値が利用可能です。

格納できるデータの最大サイズは JSON 形式で表現した状態で Unicode 換算で 65534 文字までです(サイズには Kii Cloud が内部で使用するフィールドも含まれます)。

Object の作成が成功すると、Kii Cloud は以下のように Object ID と作成時間(UNIX 時間、ミリ秒、UTC)をレスポンスとして返します。

< HTTP/1.1 201 Created
< Server: Apache-Coyote/1.1
< Location: https://api-jp.kii.com/api/apps/{APP_ID}/users/{USER_ID}/buckets/{BUCKET_ID}/
objects/{OBJECT_ID}
< ETag: "1"
< Content-Type: application/vnd.kii.ObjectCreationResponse+json
< Transfer-Encoding: chunked
< Date: Mon, 14 May 2012 23:45:14 GMT
<
{
  "objectID" : {OBJECT_ID},
  "createdAt" : 1337039114613,
  "dataType" : "application/vnd.{APP_ID}.mydata+json"
}

ID を指定して Object を作成

作成された Object には自動的に ID が付与されますが、明示的に ID を指定して Object を作成することもできます。

以下に、 Object を ID を指定して作成する例を挙げます。

curl -v -X PUT \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/vnd.{APP_ID}.mydata+json" \
  "https://api-jp.kii.com/api/apps/{APP_ID}/users/me/buckets/{BUCKET_ID}/objects/{OBJECT_ID}" \
  -d '{"score": 1800, "name": "game1"}'

Object の作成が成功すると、Kii Cloud は以下のように 作成時間と更新時間(UNIX 時間、ミリ秒、UTC)をレスポンスとして返します。

< HTTP/1.1 201 Created
< Server: Apache-Coyote/1.1
< Location: https://api-jp.kii.com/api/apps/{APP_ID}/users/{USER_ID}/buckets/{BUCKET_ID}/objects/{OBJECT_ID}
< ETag: "1"
< Content-Type: application/vnd.kii.ObjectUpdateResponse+json;charset=UTF-8
< Date: Mon, 08 Dec 2014 02:16:50 GMT
< 
{
  "createdAt" : 1418005010468,
  "modifiedAt" : 1418005010468
}

Object アクセスのヒント

  • アプリケーションスコープに書き込めない:

    アプリケーションスコープはすべてのユーザーや、ログイン前の匿名ユーザーの状態でも読み込めますが、書き込むにはユーザーのログインが必要です。もし、アプリでユーザーのログイン操作を省略したい場合は、匿名ユーザーのままアプリケーションスコープの ACL を変更するのではなく、仮ユーザー(Pseudo User)としてログインする設計をおすすめします。詳細は、明示的なログインを行わない利用 をご覧ください。

    また、アプリケーションスコープの利用にはセキュリティの考慮も必要です。詳細は、セキュリティ をご覧ください。

  • 書き込んだはずの Object が参照できない:

    Bucket のスコープが意図したとおりかどうか、ご確認ください。

    書き込みと読み込みを異なるスコープで行うと、Bucket 名が同じであっても書き込んだ内容を取得できません。開発者ポータルのデータブラウザを使って読み込んだ場合でも、同様です。

    たとえば、アプリケーションスコープの myBucket に作成したデータは、ユーザースコープの myBucket から読み込もうとしても、結果が得られません。