プライマリ・コンテンツに移動
Oracle® REST Data Services RESTのためのSODA開発者ガイド
リリース17.2.4
E67394-05
目次へ移動
目次
索引へ移動
索引

前
次

4 RESTのためのSODAのHTTP操作

RESTのためのSODAのHTTP操作について説明しています。

表4-1に、RESTのためのSODAによって提供されるHTTP操作をまとめます。操作の完全な説明を参照するには、左の列のリンクをクリックします。

表4-1 RESTのためのSODAのHTTP操作

操作 説明

GET schema

スキーマ内のコレクション名の一部またはすべてを取得します。

GET collection

サブセットを指定するパラメータを使用して、コレクションからオブジェクトのすべて、またはそのサブセットを取得します。戻されるセットをページングできます。

GET object

指定したオブジェクトをコレクションから取得します。

PUT collection

存在しない場合は、コレクションを作成します。

PUT object

アップロードしたオブジェクト(通常は新規バージョン)で指定したオブジェクトを置き換えます。

コレクションがクライアントによって割り当てられたキーを持ち、アップロードしたオブジェクトがコレクションに存在しない場合は、PUTはアップロードしたオブジェクトをコレクションに挿入します。

DELETE collection

コレクションを削除します。

DELETE object

指定したオブジェクトをコレクションから削除します。

POST object

アップロードしたオブジェクトを指定したコレクションにPUTし、キーを割り当ててそのキーを戻します。コレクションは、サーバーが割り当てるキーを使用する必要があります。

POST query

サブセットを指定するフィルタを使用して、コレクションからオブジェクトのすべて、またはそのサブセットを取得します。戻されるセットはページングできません。

POST array insert

指定されたコレクションにオブジェクトの配列を挿入し、キーを割り当ててそのキーを戻します。

POST bulk delete

コレクションからオブジェクトのすべて、またはそのサブセットを削除します。

4.1 RESTのためのSODAのHTTP操作のURI

RESTのためのSODAのHTTP操作は、Universal Resource Identifier (URI)によって指定されます。

URIの形式は、次のとおりです。

/ords/schema/soda/[version/[collection/[{key/|?action=action}]]]

ここで、

  • ordsは、Oracle REST Data Services(ORDS)リスナーのディレクトリで、RESTのためのSODAはそのコンポーネントです。

  • schemaは、RESTのためのSODAのエンド・ポイントとして構成されたOracle Databaseスキーマの名前です。

  • sodaは、ORDS内のテンプレートとしてマッピングしたときにOracle Database JSONサービスに付けた名前です。

  • versionは、sodaのバージョン番号です。

  • collectionは、schema内に保存されるオブジェクトのセットの名前です。

    通常、オブジェクトはJSONドキュメントですが、Multipurpose Internet Mail Extensions(MIME)タイプ(イメージ、オーディオ、ビデオなど)も可能です。

    JSONドキュメントは、テキストJSONとして表現されます。

    通常、アプリケーションは、コレクションを使用して特定のタイプのオブジェクトのすべてのインスタンスを保持します。このように、コレクションはリレーショナル・データベースの表に類似しています。1つの列にキーを格納し、別の列にコンテンツを格納します。

  • keyは、collection内のオブジェクトを一意に識別する文字列です。

    指定されたオブジェクトは、そのキーによって指定されています。

  • actionは、queryindexunindexinsertupdateまたはdeleteのいずれかです。

4.2 RESTのためのSODAのHTTP操作のレスポンス・ボディ

RESTのためのSODAのHTTP操作により情報やオブジェクトが戻される場合、レスポンス・ボディでこれが行われます。

GET object操作では、レスポンス・ボディは単一のオブジェクトです。

表4-2に、レスポンス・ボディに表示されるフィールドのリストとその説明を示します。

表4-2 レスポンス・ボディに表示されるフィールド

フィールド 説明

key

コレクション内のオブジェクト(通常はJSONドキュメント)を一意に識別する文字列。

etag

HTTPエンティティ・タグ(ETag) - チェックサムまたはバージョン。

created

作成日のタイム・スタンプ。

lastModified

最終変更のタイムスタンプ。

value

オブジェクトのコンテンツ(JSONオブジェクトにのみ適用)。

mediaType

HTTPコンテンツ・タイプ(非JSONオブジェクトにのみ適用)。

bytes

HTTPコンテンツ長(非JSONオブジェクトにのみ適用)。

items

その操作により検索または作成された1つ以上のコレクションまたはオブジェクトのリスト。このフィールドには、表4-3に示すフィールドが続きます。

操作がオブジェクトを作成または戻す場合、レスポンス・ボディに表4-3に示すフィールドを追加できます。追加のフィールドはitemsフィールドの後に現れます。

表4-3 オブジェクトを戻す操作のレスポンス・ボディの追加フィールド

フィールド 説明

name

コレクションの名前。このフィールドはGET schemaのレスポンス・ボディにのみ表示されます。

properties

コレクションのプロパティ。このフィールドはGET schemaのレスポンス・ボディにのみ表示されます。

hasMore

trueは利用可能なオブジェクトが尽きる前にlimitに到達した場合で、falseはそれ以外です。このフィールドは常に存在します。

limit

サーバーで設定されたコレクション(行)の最大数の制限。

offset

戻されるオブジェクトの最初を示すオフセット(既知の場合)。

count

戻されるオブジェクトの数。これは、POST bulk deleteのレスポンス・ボディにのみ表示されるフィールドです。

totalResults

コレクション内のオブジェクトの数(要求した場合)。

links

GET collection操作の最後に存在するフィールド。詳細は、「GET collection」を参照してください。

例4-1は、25個のオブジェクトを戻すレスポンス・ボディの構造を示しています。1番目のオブジェクトはJSONオブジェクトで、2番目はjpegイメージです。これらのオブジェクトを含むコレクションには、追加のオブジェクトが含まれています。

例4-1 レスポンス本文

{

  "items" : [
    {
      "id"           : "key_of_object_1",
      "etag"         : "etag_of_object_1",
      "lastModified" : "lastmodified_timestamp_of_object_1",
      "value"        : {object_1}
    },
    {
      "id"           : "key_of_object_2",
      "etag"         : "etag_of_object_2",
      "lastModified" : "lastmodified_timestamp_of_object_2",
      "mediaType"    : "image/jpeg",
      "bytes"        : 1234
    },
    ...
  ],
  "hasMore" : true,
  "limit"   : 100,
  "offset"  : 50,
  "count"   : 25
  "links"   : [ ... ]
}

4.3 GET schema

GET schemaは、スキーマ内のコレクション名のすべて、またはそのサブセットを取得します。

4.3.1 GET schemaのURLパターン

GET schemaのURLパターンを説明します。

/ords/schema/soda/version/

パラメータを指定しなければ、GET schemaによりschema内のすべてのコレクション名が取得されます。

パラメータ 説明

limit=n

リストするコレクション名の数をnに制限します。

fromID=collection

取得を開始するcollection(指定したコレクションを含む)。

4.3.2 GET schemaのレスポンス・コード

GET schemaのレスポンス・コードを説明します。

200

成功 - レスポンス・ボディには、スキーマ内のコレクションの名前とプロパティが名前の順序で含まれています。次に例を示します。

{
  "items" : [
    {"name"        : "employees",
     "properties" : {...} },
    {"name"        : "departments",
     "properties" : {...} },
    ...
  ],
  "hasMore" : false
}

hasMoretrueの場合、コレクション名の次のセットを取得するには、fromID=last_returned_collectionと指定します。(前述の例では、last_returned_collection"regions"です。)

404

スキーマが見つからないか、アクセスが許可されていないかのいずれかです。

4.4 GET collection

GET collectionは、サブセットを指定するパラメータを使用してコレクションからオブジェクトのすべて、またはそのサブセットを取得します。戻されるオブジェクトのセットをページングできます。

関連項目:

4.4.1 GET collectionのURLパターン

GET collectionのURLパターンを説明します。

/ords/schema/soda/version/collection/

パラメータを指定しなければ、GET collectionにより、collectionからすべてのオブジェクト(キーとコンテンツの両方)が取得され、collection内のオブジェクトの数は戻されません。

注意:

コレクション内が非JSONオブジェクトの場合は、GET collectionにより、コンテンツのかわりにメディア・タイプおよびバイト単位のサイズ(既知の場合)が戻されます。

パラメータ 説明

limit=n

リストするオブジェクトの数をnに制限します。

offset=n

最初のオブジェクトを取得する前にn個のオブジェクトをスキップします。

fields={id|value|all}

オブジェクトのidフィールド(キー)のみ、オブジェクトのvalueフィールド(コンテンツ)のみ、またはallフィールド(キーとコンテンツの両方)を取得します。

fieldsの値にかかわらず、GET collectionにより、そのコレクションが各ドキュメントのために保存している他のメタデータは戻されます。

totalResults=true

コレクション内のオブジェクトの数を戻します。(注意: 非効率)

fromID=key

keyの後からオブジェクトの取得を開始します(昇順)。

toID=key

keyの前でオブジェクトの取得を停止します(降順)。

after=key

keyの後からオブジェクトの取得を開始します(昇順)。

before=key

keyの前でオブジェクトの取得を停止します(降順)。

since=timestamp

timestampより後のタイム・スタンプを持つオブジェクトのみを取得します。

until=timestamp

timestampより前のタイム・スタンプを持つオブジェクトのみを取得します。

4.4.2 GET collectionのレスポンス・コード

GET collectionのレスポンス・コードを説明します。

200

成功 - レスポンス・ボディには、collectionの指定したオブジェクトが含まれています(fields=idを指定した場合はキーのみ)。次に例を示します。

{
  "items" : [
    {
      "id"           : "key_of_object_1",
      "etag"         : "etag_of_object_1",
      "lastModified" : "lastmodified_timestamp_of_object_1",
      "value"        : {object_1}
    },
    {
      "id"           : "key_of_object_2",
      "etag"         : "etag_of_object_2",
      "lastModified" : "lastmodified_timestamp_of_object_2",
      "value"        : {object_2}
    },
    {
      "id"           : "key_of_object_3",
      "etag"         : "etag_of_object_3",
      "lastModified" : "lastmodified_timestamp_of_object_3",
      "mediaType"    : "image/jpeg",
      "bytes"        : 1234
    },
    ...
  ],
  "hasMore" : true,
  "limit"   : 100,
  "offset"  : 50,
  "count"   : 25
  "links"   : [ ... ]
}

hasMoretrueの場合、次のオブジェクトのセットを取得するには、適切なパラメータを使用して操作を繰り返します。次に例を示します。

  • offset=n(レスポンス・ボディにオフセットが含まれている場合)

  • toID=last_returned_keyまたはbefore=last_returned_key(レスポンス・ボディにdescending=trueが含まれている場合)

  • fromID=last_returned_keyまたはafter=last_returned_key(レスポンス・ボディにdescending=trueが含まれている場合)

linksの詳細は、「GET collectionのリンク配列」を参照してください

401

コレクションの読取りアクセスが許可されていません。

404

コレクションが見つかりませんでした。

4.4.3 GET collectionのリンク配列

GET collectionのlinks配列を説明します。

links配列の存在およびそのコンテンツは、GET collection操作のパラメータによって決定されるモードに依存します。

links配列が存在する場合は、戻される各オブジェクトの要素が格納されています。各要素には、そのオブジェクトから他のオブジェクトへのリンクが含まれています。次のリンクがあります。

  • firstは、そのオブジェクトからコレクション内の最初のオブジェクトにリンクします。

  • prevは、そのオブジェクトからコレクション内の前のオブジェクトにリンクします。

  • nextは、そのオブジェクトからコレクション内の次のオブジェクトにリンクします。

prevおよびnextリンクを使用し、戻されたオブジェクトのセットをページングできます。

表4-4に、GET collectionのパラメータによりどのようにモードが決定され、links配列の存在とそのコンテンツが決定されるのかを示します。

表4-4 GET collectionのパラメータとモードおよびリンク配列の関係

パラメータ モード リンク配列

fields=id

キーのみ

存在しません(他のパラメータに関係なく)。

offset=n

オフセット

戻される各オブジェクトの要素が格納されます。各要素には、注意書きのある場合を除き、次のリンクが含まれます。

  • first(最初のオブジェクトの場合を除く)

  • prev(最初のオブジェクトの場合を除く)

  • next(最後のオブジェクトの場合を除く)

fromID=key

toID=key

after=key

before=key

キー

戻される各オブジェクトの要素が格納されます。各要素には、注意書きのある場合を除き、次のリンクが含まれます。

  • prev(最初のオブジェクトの場合を除く)

  • next(最後のオブジェクトの場合を除く)

since=timestamp

until=timestamp

タイムスタンプ

存在しません。

4.5 GET object

GET objectは、指定されたコレクションから指定されたオブジェクトを取得します。

4.5.1 GET objectのURLパターン

GET objectのURLパターンを説明します。

/ords/schema/soda/version/collection/key/

パラメータなし。

4.5.2 GET objectのリクエスト・ヘッダー

GET objectのリクエスト・ヘッダーを説明します。

操作GET objectは、次のオプションのリクエスト・ヘッダーを受け入れます。

ヘッダー 説明

If-Modified-Since=timestamp

timestampからオブジェクトが変更されていない場合、レスポンス・コード304が戻されます。

If-None-Match

オブジェクトのetagが現在のチェックサムまたはバージョンに一致する場合、レスポンス・コード304が戻されます。

4.5.3 GET objectのレスポンス・コード

GET objectのレスポンス・コードを説明します。

200

成功 - レスポンス・ボディにはURLパターンで識別されたオブジェクトが含まれます。

204

オブジェクトのコンテンツはnullです。

304

etagオブジェクトと一致する変更日またはチェックサムから、どのオブジェクトも変更されていません(「GET objectのリクエスト・ヘッダー」を参照)。

401

コレクションまたはオブジェクトの読取りアクセスが許可されていません。

404

コレクションまたはオブジェクトが見つかりませんでした。

4.6 PUT collection

PUT collectionは、存在しない場合はコレクションを作成します。

4.6.1 PUT collectionのURLパターン

PUT collectionのURLパターンを説明します。

/ords/schema/soda/version/collection/

パラメータなし。

4.6.2 PUT collectionのリクエスト・ボディ(オプション)

PUT collectionのリクエスト・ボディを説明します。

「コレクション仕様」を参照してください。

4.6.3 PUT collectionのレスポンス・コード

PUT collectionのレスポンス・コードを説明します。

200

同じ名前のコレクションおよびプロパティがすでに存在しています。

201

成功 - コレクションが作成されました。

401

コレクションの作成が許可されていません。

4.7 PUT object

PUT objectは、指定されたコレクション内の指定されたオブジェクトをアップロードされたオブジェクト(通常、新規バージョン)で置き換えます。コレクションがクライアントによって割り当てられたキーを持ち、アップロードしたオブジェクトがコレクションに存在しない場合は、PUTはアップロードしたオブジェクトをコレクションに挿入します。

4.7.1 PUT objectのURLパターン

PUT objectのURLパターンを説明します。

/ords/schema/soda/version/collection/key/

パラメータなし。

4.7.2 PUT objectのリクエスト・ボディ

PUT objectのリクエスト・ボディは、アップロードされたオブジェクトです。

4.7.3 PUT objectのレスポンス・コード

PUT objectのレスポンス・コードを説明します。

200

成功 - オブジェクトは置換されました。

401

コレクションの更新が許可されていません。

405

コレクションは読取り専用です。

4.8 DELETE collection

DELETE collectionは、コレクションを削除します。

コレクションからすべてのオブジェクトを削除し、コレクション自体は削除しない場合は、POST bulk deleteを使用します。

4.8.1 DELETE collectionのURLパターン

DELETE collectionのURLパターンを説明します。

/ords/schema/soda/version/collection/

パラメータなし。

4.8.2 DELETE collectionのレスポンス・コード

DELETE collectionのレスポンス・コードを説明します。

200

成功 - コレクションが削除されました。

401

コレクションの削除が許可されていません。

404

コレクションが見つかりませんでした。

4.9 DELETE object

DELETE objectは、指定されたコレクションから指定されたオブジェクトを削除します。

4.9.1 DELETE objectのURLパターン

DELETE objectのURLパターンを説明します。

/ords/schema/soda/version/collection/key/

パラメータなし。

4.9.2 DELETE objectのレスポンス・コード

DELETE objectのレスポンス・コードを説明します。

200

成功 - オブジェクトが削除されました。

401

コレクションからの削除、またはこのオブジェクトの削除のいずれかが許可されていません。

404

オブジェクトが見つかりませんでした。

405

コレクションは読取り専用です。

4.10 POST object

POST objectは、アップロードされたオブジェクトを指定されたコレクションに挿入し、キーを割り当ててそのキーを戻します。コレクションは、サーバーによって割り当てられるキーを使用する必要があります。

コレクションが、クライアントによって割り当てられるキーを使用する場合は、PUT objectを使用します。キーの割当て方法の詳細は、「キーの割当て方法」を参照してください。

4.10.1 POST objectのURLパターン

POST objectのURLパターンを説明します。

/ords/schema/soda/version/collection/

パラメータなし。

4.10.2 POST objectのリクエスト・ボディ

POST objectのリクエスト・ボディは、コレクションに挿入されるよう、アップロードされたオブジェクトです。

4.10.3 POST objectのレスポンス・コード

POST objectのレスポンス・コードを説明します。

201

成功 - オブジェクトはコレクション内にあり、レスポンス・ボディにはサーバーによって割当てられたキーが含まれ、その他の情報が含まれている可能性もあります。次に例を示します。

{
  "items" : [
    {
      "id"           : "key",
      "etag"         : "etag",
      "lastModified" : "timestamp"
      "created"      : "timestamp"
    }
  ],
  "hasMore" : false
}

202

オブジェクトは受入れられて非同期挿入のキューに入れられ、レスポンス・ボディにはサーバーによって割当てられたキーが含まれています。

401

コレクションへの挿入が許可されていません。

405

コレクションは読取り専用です。

501

サポートされていない操作です(たとえば、サーバーによるキー割当てではない)。

4.11 POST query

POST queryは、サブセットを指定するフィルタを使用してコレクションからオブジェクトのすべて、またはそのサブセットを取得します。戻されるオブジェクトのセットはページングできません。

関連項目:

4.11.1 POST queryのURLパターン

POST queryのURLパターンを説明します。

/ords/schema/soda/version/collection?action=query

パラメータは、注意書きのある場合を除きオプションです。

パラメータ 説明

action=query

必須。アクションの種類を指定します。

limit=n

戻されるオブジェクトの数をnに制限します。

offset=n

オブジェクトを戻す前に、n個のオブジェクトをスキップします。

fields={id|value|all}

オブジェクトのid(キー)のみ、オブジェクトのvalue(コンテンツ)のみ、またはall(オブジェクトのキーとコンテンツ)を戻します。デフォルト: all

4.11.2 POST queryのリクエスト・ボディ

POST queryのリクエスト・ボディからフィルタ仕様オブジェクトを省略した場合、操作ではコレクション内のすべてのオブジェクトが取得されます。

関連項目:

SODAフィルタ使用に関する情報は、『Oracle Database Simple Oracle Document Access (SODA)の概要』を参照

4.11.3 POST queryのレスポンス・コード

POST queryのレスポンス・コードを説明します。

200

成功 - オブジェクトはコレクション内にあり、レスポンス・ボディには、フィルタに一致するコレクション内のすべてのオブジェクトが含まれます。

404

コレクションが見つからないか、コレクションへの読取りアクセスが許可されていないかのいずれかです。

4.12 POST array insert

POST array insertは、オブジェクトの配列を指定されたコレクションに挿入し、キーを割り当ててそのキーを戻します。

4.12.1 POST array insertのURLパターン

POST array insertのURLパターンを説明します。

/ords/schema/soda/version/collection?action=insert
パラメータ 説明

action=insert

必須。アクションの種類を指定します。

4.12.2 POST array insertのリクエスト・ボディ

POST array insertのリクエスト・ボディは、オブジェクトの配列です。

オブジェクトの配列です。

4.12.3 POST array insertのレスポンス・コード

POST array insertのレスポンス・コードを説明します。

200

成功 - レスポンス・ボディには、挿入されたオブジェクトの配列が割当てられたキーとともに含まれます。次に例を示します。

{
  "items" : [
    {
      "id"           : "12345678",
      "etag"         : "...",
      "lastModified" : "..."
      "created"      : "..."
    },
    {
      "id"           : "23456789",
      "etag"         : "...",
      "lastModified" : "..."
      "created"      : "..."
    }
  ],
  "hasMore" : false
}

401

コレクションへの挿入が許可されていません。

404

コレクションが見つかりませんでした。

405

コレクションは読取り専用です。

4.13 POST bulk delete

POST bulk deleteは、サブセットを指定するフィルタを使用して指定されたコレクションからオブジェクトのすべて、またはそのサブセットを削除します。

注意:

コレクションからすべてのオブジェクトを削除しても、空のコレクションは存在しています。コレクション自体を削除するには、DELETE collectionを使用します。

4.13.1 POST bulk deleteのURLパターン

POST bulk deleteのURLパターンを説明します。

次のいずれかです。

/ords/schema/soda/version/collection?action=delete

/ords/schema/soda/version/collection?action=truncate
パラメータ 説明

action=delete

必須。サブセットを指定するオプションのフィルタを使用してcollectionからオブジェクトのすべて、またはそのサブセットを削除することを指定します。次の警告を参照してください。

action=truncate

必須。collectionからすべてのオブジェクトの削除することを指定します。フィルタは使用しません。

警告:

action=deleteを指定し、フィルタ仕様を省略するか、またはフィルタ仕様が空の場合、その操作によりコレクションのすべてのオブジェクトが削除されます。

4.13.2 POST bulk deleteのリクエスト・ボディ(オプション)

SODAフィルタ仕様の詳細は、Oracle Database JavaのためのSODA開発者ガイドを参照してください。

4.13.3 POST bulk deleteのレスポンス・コード

POST bulk deleteのレスポンス・コードを説明します。

200

成功 - レスポンス・ボディには削除されたコレクションの数が含まれています。次に例を示します。

{
  "count" : 42
}

401

コレクションからの削除が許可されていません。

405

コレクションは読取り専用です。