機械翻訳について

4 CRUDタスク

GET、POST、PATCH、およびDELETEを含む標準のHTTPリクエスト・メソッドを使用してビジネス・オブジェクトにアクセスできます。

ビジネス・オブジェクトの取得

REST APIは、RESTリソースのGETメソッドをサポートして、リソースまたはネストされたリソースを取得したり、リソースをページしたり、問合せを使用してリソース・コレクションをフィルタリングしたり、リソース・コレクションをソートしたりします。

REST APIは、以下のGETメソッドの使用例をサポートしています:

  • リソース・コレクション・ペイロードを取得しています。

  • リソース・コレクションのペイロードをリソース・アイテムのサブセットで取得します。

  • リソース・アイテムのペイロードを取得しています。

  • ページされたリソース・コレクションをフェッチしています。

  • ソートされたリソース・コレクションをフェッチしています。

  • ネストされた子リソース・アイテム・ペイロードを取得しています。

  • リソース・アイテム・ペイロード内のデータのみを取得しています。

  • 問合せパラメータでリソース・アイテムのペイロードをフィルタリングします。

ビジネス・オブジェクトの取得

REST APIは、アイテムをフィルタリングせずにリソース・コレクションをフェッチすることをサポートします。

次のサンプルは、Departmentリソース・コレクションとコレクションの5つのアイテムすべてをフェッチします。

リクエスト

  • URL

    <base_url>/Department

  • HTTPメソッド

    GET

  • Content-Type

    none

  • ペイロード

    none

レスポンス

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourcecollection+json

  • ペイロード

    {
      "items" : [ {
        "DepartmentId" : 10,
        "DepartmentName" : "Administration",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/10",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/10/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      }, {
        "DepartmentId" : 20,
        "DepartmentName" : "Marketing",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/20",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/20/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      }, {
        "DepartmentId" : 30,
        "DepartmentName" : "Purchasing",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/30",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/30/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      }, {
        "DepartmentId" : 40,
        "DepartmentName" : "Human Resources",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/40",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/40/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      }, {
        "DepartmentId" : 50,
        "DepartmentName" : "Shipping",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/50",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/50/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      } ],
      "count" : 5,
      "hasMore" : false,
      "limit" : 5,
      "offset" : 0,
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department",
        "name" : "Department",
        "kind" : "collection"
      } ]
    }
    

サブセットを含むビジネス・オブジェクトの取得

REST APIは、アイテムのサブセットを含むリソース・コレクションのフェッチをサポートします。

ネストされた子リソースのペイロード構造は、リクエストに登録されているREST APIフレームワークのバージョンによって異なります。 REST APIフレームワークのバージョンの詳細は、「REST API Frameworkのバージョン・サポートの理解」を参照してください。

次のサンプルは、REST APIフレームワーク・バージョン3 (以降)でサポートされているレスポンス・ペイロード構造の変更を反映する、REST APIフレームワークの様々なバージョンに基づいています。 どちらのフレームワーク・シナリオでも、サンプルはEmployeeリソースをDepartmentリソースの子としてフェッチします。

REST API Frameworkバージョン3 (以降)

REST APIフレームワークのバージョン3から、REST APIは、リソース・アイテムの配列としてではなく、レスポンス・ペイロード内のネストされた子リソースをリソース・コレクションとして返します。 フレームワーク・バージョン3 (以降)で使用可能なこの機能を使用すると、Webアプリケーションでは、初期リクエストでフェッチされないままのアイテム数を決定した後、追加レコードのリクエストを作成できます。 子リソースの属性hasMoreおよびcountは、リソース・コレクションから戻されるアイテムの数を示します。 REST APIフレームワーク・バージョン3にオプト・インするときにレスポンス・ペイロードからページ区切り属性を使用する方法の詳細は、「ビジネス・オブジェクトのページング」を参照してください。

次のサンプルは、REST APIフレームワーク・バージョン3 (およびそれ以降)の機能を示しています。 レスポンス・ペイロードはネストされた子リソースをリソース・コレクションとして表し、コレクション・オブジェクトにはhasMoreおよびcount属性が含まれます。 リンクが提供されている場合は、追加のリソース・アイテムの子リソースを問い合せる必要があります。 このサンプルでは、レスポンス・ペイロードにhasMore属性がfalseで、部門10または部門20のEmployee子リソースにはフェッチされない品目があることを提案していることが示されています。

フレームワーク・バージョンを使用したリクエスト3

  • URL

    <base_url>/Department?fields=DepartmentId;Employee:FirstName&onlyData=true

  • HTTPメソッド

    GET

  • 問合せパラメータ

    fields

    このパラメータはリソース属性をフィルタに掛け、指定された属性のみが返されるようにします。 パラメータ値は、単一のリソース・コレクションをフィルタリングするときに、コンマで区切られた属性名のリストです。 例: ?fields=FirstName,LastName 複数のリソースをフィルタリングする場合は、リソース名の後にコロンを付け、コンマ区切りの属性名リストに各リソース・フィルタ・リストをセミコロンで区切ります。 例 : ?fields=Employee:FirstName;Employee.JobHistory:JobId ドット表記法ではネストされたリソースにアクセスできます。 このパラメータは、expand問合せパラメータと組み合わせることはできません。 両方を指定すると、fieldsのみが考慮されます。

    onlyData

    このパラメータは、リソース・アイテムのペイロードにデータのみを含めるようにフィルタリングします(リンク・セクションはありません)。

  • Content-Type

    none

  • ペイロード

    none

フレームワーク・バージョンを使用したレスポンス3

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourcecollection+json

  • ペイロード

    {
        "items" : [ {
            "DepartmentId" : 10,
            "Employee" : {
                 "items" : [ {
                    {
                        "FirstName" : "Jennifer"
                       }
              }  ],
              "count" : 1,
              "hasMore" : false,
              "limit" : 25,
              "offset" : 0,
              "links" : [ {
                  "rel" : "self",
                  "href" : "<base_url>/Department/10/child/Employee",
                  "name" : "Employee",
                  "kind" : "collection"
            }, ]
         }, {
            "DepartmentId" : 20,
                "Employee" : {
                    "items" : [ {
                       {
                           "FirstName" : "Michael"
                       },
                       {
                           "FirstName" : "Pat"
                       }
              }  ],
              "count" : 2,
              "hasMore" : false,
              "limit" : 25,
              "offset" : 0,
              "links" : [ {
                  "rel" : "self",
                  "href" : "<base_url>/Department/20/child/Employee",
                  "name" : "Employee",
                  "kind" : "collection"
            }, ]
         }, {
          ...
        ],
        "count" : 25,
        "hasMore" : true,
        "limit" : 25,
        "offset" : 0,
        "links" : [
            {
                "rel" : "self",
                "href" : "<base_url>/Department",
                "name" : "Department",
                "kind" : "collection"
            }
        ]
    

REST API Frameworkバージョン1またはバージョン2

REST APIフレームワークのバージョン1とバージョン2では、レスポンス・ペイロードに展開されたネストされた子リソースがリソース・アイテムの配列として返されます。 フェッチされるリソース・コレクションが大きい場合は、すべてのアイテムをフェッチするために複数のリクエストが必要となります。

次のサンプルでは、DepartmentおよびEmployeeのコレクションの属性値をフェッチします。 問合せパラメータfieldsは、レスポンス・ペイロードに指定された属性のみが含まれることを保証します。 GETリクエストは、属性値を指定していないURLのリソースには値を返しません。

最初のリクエスト(URL 1)によって、従業員101のアイテムがフェッチされます。 問合せパラメータfieldsは、レスポンス・ペイロードに指定された属性のみが含まれることを保証: FirstNameLastName、およびEmailを含む。

2番目のリクエスト(URL 2)は、部門DepartmentIdおよび各部門の従業員のFirstNameアイテムをフェッチします。 問合せパラメータonlyDataは、レスポンスをフィルタ処理して子リンクを非表示にします。

3番目のリクエスト(URL 3)は、部門DepartmentId、各部門の従業員のFirstNameアイテム、および各従業員のJobId履歴をフェッチします。 問合せパラメータonlyDataは、子リンクを非表示にするようにレスポンスをフィルタ処理します。

1 Frameworkバージョン1または2を使用したリクエスト

  • URL 1

    <base_url>/Employee/101?fields=FirstName,LastName,Email

  • HTTPメソッド

    GET

  • 問合せパラメータ

    fields

    このパラメータはリソース属性をフィルタに掛け、指定された属性のみが返されるようにします。 パラメータ値は、単一のリソース・コレクションをフィルタリングするときに、コンマで区切られた属性名のリストです。 例: ?fields=FirstName,LastName 複数のリソースをフィルタリングする場合は、リソース名の後にコロンを付け、コンマ区切りの属性名リストに各リソース・フィルタ・リストをセミコロンで区切ります。 例 : ?fields=Employee:FirstName;Employee.JobHistory:JobId ドット表記法ではネストされたリソースにアクセスできます。 このパラメータは、expand問合せパラメータと組み合わせることはできません。 両方を指定すると、fieldsのみが考慮されます。

  • Content-Type

    none

  • ペイロード

    none

Response 1 From Framework Version 1または2

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • ペイロード 1

    {
      "FirstName" : "Neena",
      "LastName" : "Smith",
      "Email" : "NSMITH",
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Employee/101",
        "name" : "Employee",
        "kind" : "item"
      } ]
    }
    

2 Frameworkバージョンを使用したリクエスト1または2

  • URL 2

    <base_url>/Department?fields=DepartmentId;Employee:FirstName&onlyData=true

  • HTTPメソッド

    GET

  • 問合せパラメータ

    fields

    このパラメータはリソース属性をフィルタに掛け、指定された属性のみが返されるようにします。 パラメータ値は、単一のリソース・コレクションをフィルタリングするときに、コンマで区切られた属性名のリストです。 例: ?fields=FirstName,LastName 複数のリソースをフィルタリングする場合は、リソース名の後にコロンを付け、コンマ区切りの属性名リストに各リソース・フィルタ・リストをセミコロンで区切ります。 例 : ?fields=Employee:FirstName;Employee.JobHistory:JobId ドット表記法ではネストされたリソースにアクセスできます。 このパラメータは、expand問合せパラメータと組み合わせることはできません。 両方を指定すると、fieldsのみが考慮されます。

    onlyData

    このパラメータは、リソース・アイテムのペイロードにデータのみを含めるようにフィルタリングします(リンク・セクションはありません)。

  • Content-Type

    none

  • ペイロード

    none

Response 2 From Framework Version 1または2

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourcecollection+json

  • ペイロード 2

    {
        "items" : [
     
            {
                "DepartmentId" : 10,
                "Employee" : [
                    {
                        "FirstName" : "Jennifer"
                    }
                ]
            },
            {
                "DepartmentId" : 20,
                "Employee" : [
                    {
                        "FirstName" : "Michael"
                    },
                    {
                        "FirstName" : "Pat"
                    }
                ]
            },
            {
                "DepartmentId" : 30,
                "Employee" : [
                    {
                        "FirstName" : "Den"
                    },
                    {
                        "FirstName" : "Alexander"
                    },
                    {
                        "FirstName" : "Shelli"
                    },
                    {
                        "FirstName" : "Sigal"
                    },
                    {
                        "FirstName" : "Guy"
                    },
                    {
                        "FirstName" : "Karen"
                    }
                ]
            },
            {
                "DepartmentId" : 40,
                "Employee" : [
                    {
                        "FirstName" : "Susan"
                    }
                ]
            },
          ...
        ],
        "count" : 25,
        "hasMore" : true,
        "limit" : 25,
        "offset" : 0,
        "links" : [
            {
                "rel" : "self",
                "href" : "<base_url>/Department",
                "name" : "Department",
                "kind" : "collection"
            }
        ]
    

3 Frameworkバージョン1または2を使用したリクエスト

  • URL 3

    <base_url>/Department?fields=DepartmentId;Employee:FirstName;Employee.JobHistory:JobId&onlyData=true

  • HTTPメソッド

    GET

  • 問合せパラメータ

    fields

    このパラメータはリソース属性をフィルタに掛け、指定された属性のみが返されるようにします。 パラメータ値は、単一のリソース・コレクションをフィルタリングするときに、コンマで区切られた属性名のリストです。 例: ?fields=FirstName,LastName 複数のリソースをフィルタリングする場合は、リソース名の後にコロンを付け、コンマ区切りの属性名リストに各リソース・フィルタ・リストをセミコロンで区切ります。 例 : ?fields=Employee:FirstName;Employee.JobHistory:JobId ドット表記法ではネストされたリソースにアクセスできます。 このパラメータは、expand問合せパラメータと組み合わせることはできません。 両方を指定すると、fieldsのみが考慮されます。

    onlyData

    このパラメータは、リソース・アイテムのペイロードにデータのみを含めるようにフィルタリングします(リンク・セクションはありません)。

  • Content-Type

    none

  • ペイロード

    none

Response 3 From Framework Version 1または2

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourcecollection+json

  • ペイロード 3

    {
        "items" : [
     
            {
                "DepartmentId" : 10,
                "Employee\" : [
                    {
                        "FirstName" : "Jennifer",
                        "JobHistory" : [
                            {
                                "JobId" : "AD_ASST"
                            },
                            {
                                "JobId" : "AC_ACCOUNT"
                            }
                        ]
                    }
                ]
            },
            {
                "DepartmentId" : 20,
                "Employee" : [
                    {
                        "FirstName" : "Michael",
                        "JobHistory" : [
                            {
                                "JobId" : "MK_REP"
                            }
                        ]
                    },
                    {
                        "FirstName" : "Pat",
                        "JobHistory" : [
                            {
                                "JobId" : "AD_ASST"
                            },
                            {
                                "JobId" : "AC_ACCOUNT"
                            }
                        ]
                    }
                ]
            },
            {
                "DepartmentId" : 30,
                "Employee" : [
                    {
                        "FirstName" : "Den",
                        "JobHistory" : [
                            {
                                "JobId" : "ST_CLERK"
                            }
                        ]
                    },
                    {
                        "FirstName" : "Alexander",
                        "JobHistory" : [
                            {
                                "JobId" : "AD_ASST"
                            },
                            {
                                "JobId" : "AC_ACCOUNT"
                            }
                        ]
                    },
                    {
                        "FirstName" : "Shelli",
                        "JobHistory" : [
                            {
                                "JobId" : "AD_ASST"
                            },
                            {
                                "JobId" : "AC_ACCOUNT"
                            }
                        ]
     
                ]
              ...
        ],
        "count" : 25,
        "hasMore" : false,
        "limit" : 25,
        "offset" : 0,
        "links" : [
            {
                "rel" : "self",
                "href" : "<base_url>/Department",
                "name" : "Department",
                "kind" : "collection"
            }
        ]
    }

ビジネス・オブジェクト・アイテムの取得

REST APIは、リソース・アイテムのフェッチをサポートします。

次のサンプルは、Departmentリソース・アイテム50をフェッチします。 レスポンスには、ネストされた子Employeeリソースへのリンクが含まれます。

リクエスト

  • URL

    <base_url>/Department/50

  • HTTPメソッド

    GET

  • Content-Type

    none

  • ペイロード

    none

レスポンス

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • ペイロード

    {
      "DepartmentId" : 50,
      "DepartmentName" : "Shipping",
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department/50",
        "name" : "Department",
        "kind" : "item"
      }, {
        "rel" : "child",
        "href" : "<base_url>/Department/50/child/Employee",
        "name" : "Employee",
        "kind" : "collection"
      } ]
    }
    

ビジネス・オブジェクトのページング

REST APIは、ページングを使用してリソース・コレクションを検索し、リソース・アイテムをセットで表示することをサポートします。 ページングは、次のURI問合せパラメータを使用して実行されます:

  • limitでは、リソース・コレクション内に返されるリソース数が制限されます。 制限がリソース数を超えた場合、フレームワークは使用可能なすべてのリソースを戻します。 値は、返されるリソースの最大数です。

  • offsetでは、ゼロ・ベースのインデックスをコレクションに定義します(0は最初の位置)。 索引は、リソース・コレクションの開始位置を識別します。 オフセットがリソース数を超えた場合、リソースは返されません。

次のサンプルでは、Departmentリソース・コレクションに5つのアイテムがあり、最初のリクエスト(URL1)は2つのアイテム(インデックス0および1)を取得し、offsetが省略されているため、レスポンスの開始位置が最初のアイテムです。 別のリソース・アイテム・セットを表示するには、2番目のリクエスト(URL2)がoffset2とともに作成され、3番目のアイテムおよび2limitが2つのアイテム(索引2および3)のみを取得し、最後のリクエスト(URL3)が4offsetが含まれる)アイテムの1つの最後のアイテム(4)に戻されることがあります。to_be_checked。

一連の新しいリソース・アイテムを取得するたびに、レスポンスのhasMore属性は、コレクションから返されるアイテムの数が増加しているかどうかを示します。 この例では、コレクションに含まれるアイテムは5つのみのため、URL3のレスポンスは、hasMorefalseに設定されており、最後のアイテム・セットが取得されたことを示しています。

limitパラメータがページングURLから省略された場合、REST APIは25limit (ビジネス・オブジェクト定義のデフォルトRangeSize値によって決定される)を想定しています。 この場合、各リクエストとともに最大25個のアイテムが返されます。 このため、コレクションをページ移動して常にlimit問合せパラメータを含め、必要な数のリソース・アイテムのみが返され、それ以上が返されないようにすることをお薦めします。

リクエスト

  • URL 1

    <base_url>/Department?limit=2

  • URL 2

    <base_url>/Department?offset=2&limit=2

  • URL 3

    <base_url>/Department?offset=4&limit=2

  • HTTPメソッド

    GET

  • 問合せパラメータ

    limit

    このパラメータは、リソース・コレクション内で返されるリソースの数を制限する整数値です。 制限がリソースの合計結果を超えると、使用可能なリソースが返されます。

    offset

    このパラメータは、リソース・コレクションの開始位置を定義する整数値です。 デフォルト(0)は最初の位置を指定します。 オフセットがリソース数を超えた場合、リソースは返されません。

  • Content-Type

    none

  • ペイロード

    none

レスポンス

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourcecollection+json

  • ペイロード 1

    {
      "items" : [ {
        "DepartmentId" : 10,
        "DepartmentName" : "Administration",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/10",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/10/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      }, {
        "DepartmentId" : 20,
        "DepartmentName" : "Marketing",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/20",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/20/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      } ],
      "count" : 2,
      "hasMore" : true,
      "limit" : 2,
      "offset" : 0,
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department",
        "name" : "Department",
        "kind" : "collection"
      } ]
    }
    
  • ペイロード 2

    {
      "items" : [ {
        "DepartmentId" : 30,
        "DepartmentName" : "Purchasing",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/30",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/30/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      }, {
        "DepartmentId" : 40,
        "DepartmentName" : "Human Resources",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/40",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/40/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      } ],
      "count" : 2,
      "hasMore" : true,
      "limit" : 2,
      "offset" : 2,
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department",
        "name" : "Department",
        "kind" : "collection"
      } ]
    }
    
  • ペイロード 3

    {
      "items" : [ {
        "DepartmentId" : 50,
        "DepartmentName" : "Shipping",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/50",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/50/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      } ],
      "count" : 1
      "hasMore" : false,
      "limit" : 2
      "offset" : 4,
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department",
        "name" : "Department,
        "kind" : "collection"
      } ]
    }
    

ビジネス・オブジェクトのソート

REST APIはフェッチされたリソース・アイテムのソートをサポートします。

ソートは、orderBy問合せ文字列パラメータを1つ以上の属性名と組み合わせて使用して実行されます。 次のオプションのソート順フラグを各属性に関連付けることができます:

  • asc:昇順でソートします。 (デフォルト)

  • descは降順でソートします。

orderBy問合せ文字列のパラメータ形式は次のとおりです:

<orderBy_attribute1_name>:<(asc/desc)>, <orderBy_attribute2_name>:<(asc/desc)>

例 : attribute1:desc,attribute2

次のサンプル(URL1)は、DepartmentName属性でソートされたDepartmentコレクションを取得します。 2番目のサンプル(URL2)は、salary属性でソートされた子Employeeコレクションをフェッチします。 いずれのリクエスト・サンプルにもソート順フラグが指定されていないため、レスポンスは昇順です。

リクエスト

  • URL 1

    <base_url>/Department?orderBy=DepartmentName

  • URL 2

    <base_url>/Department/50/child/Employee?orderBy=Salary

  • HTTPメソッド

    GET

  • 問合せのパラメータ

    orderBy

    このパラメータは、指定された属性に基づいてリソース・コレクションを順序付けます。 パラメータ値は、コンマで区切られた属性名の文字列であり、各行にはコロンとascまたはdescが続くことがあります。 昇順にはascを、降順にはdescを指定します。 デフォルト値はascです。 たとえば、?orderBy=attr1:asc,attr2:descです。

  • Content-Type

    none

  • ペイロード

    none

レスポンス

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • ペイロード 1

    {
      "items" : [ {
        "DepartmentId" : 10,
        "DepartmentName" : "Administration",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/10",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/10/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      }, {
        "DepartmentId" : 40,
        "DepartmentName" : "Human Resources",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/40",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/40/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      }, {
        "DepartmentId" : 20,
        "DepartmentName" : "Marketing",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/20",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/20/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      }, {
        "DepartmentId" : 30,
        "DepartmentName" : "Purchasing",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/30",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/30/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      }, {
        "DepartmentId" : 50,
        "DepartmentName" : "Shipping",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/50",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/50/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      } ],
      "count" : 5,
      "hasMore" : false,
      "limit" : 25,
      "offset" : 0,
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department",
        "name" : "Department",
        "kind" : "collection"
      } ]
    }
    
  • ペイロード 2

    {
      "items" : [ {
        "EmployeeId" : 132,
        "FirstName" : "TJ",
        "LastName" : "Olson",
        "Email" : "TJOLSON",
        "JobId" : "ST_CLERK",
        "DepartmentId" : 50,
        "Salary" : 2100,
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Employee/132",
          "name" : "Employee",
          "kind" : "item"
        } ]
      }, {
        "EmployeeId" : 136,
        "FirstName" : "Hazel",
        "LastName" : "Philtanker",
        "Email" : "HPHILTAN",
        "JobId" : "ST_CLERK",
        "DepartmentId" : 50,
        "Salary" : 3100,
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Employee/136",
          "name" : "Employee",
          "kind" : "item"
        } ]
      } ],
      "count" : 2,
      "hasMore" : false,
      "limit" : 25,
      "offset" : 0,
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Employee",
        "name" : "Employee",
        "kind" : "collection"
      } ]
    }
    

子ビジネス・オブジェクトの取得

REST APIでは、ネストされた子リソース・コレクションの取得がサポートされています。

ネストされた子リソース・コレクションのペイロード構造は、Webアプリケーションに登録されているREST APIフレームワーク・バージョンによって異なります。 REST APIフレームワークのバージョンの詳細は、「REST API Frameworkバージョンの使用」を参照してください。

次のサンプルは、Employeeリソースの2つの異なるバージョンに基づいています。 リソース1.0を示すURLサンプルには、REST APIフレームワーク・バージョン1および2でサポートされているレスポンス・ペイロード構造が反映されます。 リソース2.0を示すURLサンプルの場合、REST APIフレームワーク・バージョン3 (以降)でサポートされているレスポンス・ペイロード構造を反映します。 どちらのフレームワーク・シナリオでも、サンプルはDepartmentリソース内にネストされたEmployeeリソースをフェッチします。

REST API Frameworkバージョン3 (以降)

REST APIフレームワークのバージョン3から、REST APIは、リソース・アイテムの配列としてではなく、レスポンス・ペイロード内のネストされた子リソースをリソース・コレクションとして返します。 フレームワーク・バージョン3 (以降)で使用可能なこの機能を使用すると、Webアプリケーションでは、初期リクエストでフェッチされないままのアイテム数を決定した後、追加レコードのリクエストを作成できます。 ネストされたリソースの属性hasMoreおよびcountは、リソース・コレクションから戻されるアイテムの数を示します。 REST APIフレームワーク・バージョン3にオプト・インするときにレスポンス・ペイロードからページ区切り属性を使用する方法の詳細は、「ビジネス・オブジェクトのページング」を参照してください。

次のサンプルは、REST APIフレームワーク・バージョン3 (およびそれ以降)の機能を示しています。 レスポンス・ペイロードはネストされた子リソースをリソース・コレクションとして表し、コレクション・オブジェクトにはhasMoreおよびcount属性が含まれます。 ネストされたリソースに追加のリソース・アイテムを問合せする必要がある場合は、リンクが提供されます。 このサンプルでは、Employeeネストされたリソースのアイテムは、ペイロード内の3countでフェッチされます。 レスポンス・ペイロードは、hasMore属性がfalseであり、どのアイテムもフェッチしないことを示すメッセージを表示します。

フレームワーク・バージョンを使用したリクエスト3

  • URL

    <base_url>/Department/50?expand=Employee

  • HTTPメソッド

    GET

  • 問合せのパラメータ

    expand

    REST APIフレームワーク・バージョン2以降と組み合せてこのパラメータを指定すると、指定した子が(リンクのみではなく)リソース・ペイロードに含められます。 この問合せパラメータの値は、allまたは<accessor1>,<accessor2>,..です。 allが指定されると、トップレベルの子だけがリソース・ペイロードに含まれます。 カンマをセパレータとして使用して複数の子を指定することができます。 例: ?expand=Employee,Localization ネストされた子は、"Child.NestedChild"の形式で提供することもできます(例: ?expand=Employee.Manager)。 ネストされた子が提供されている場合(例: Employee.Manager)、欠落している子は暗黙的に処理されます。 たとえば、?expand=Employee.Manager?expand=Employee,Employee.Manager (EmployeeManagerを展開します)と同じです。

    expandパラメータは、fieldsパラメータと組み合せることができないことに注意してください。 両方のパラメータが指定されている場合は、fieldsのみが考慮されます。

  • Content-Type

    none

  • ペイロード

    none

Frameworkバージョンからのレスポンス3

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • ペイロード

    {
      "DepartmentId" : 50,
      "DepartmentName" : "Shipping",
      "Employee" : {
        "items" : [ {
           "EmployeeId" : 120,
           "FirstName" : "Matthew",
           "LastName" : "Weiss",
           "Email" : "MWEISS",
           "JobId" : "ST_MAN",
           "DepartmentId" : 50,
           "Salary" : 8000,
           "links" : [ {
             "rel" : "self",
             "href" : "<base_url>/Department/50/child/Employee/120",
             "name" : "Employee",
             "kind" : "item"
           }, {
             "rel" : "parent",
             "href" : "<base_url>/Department/50",
             "name" : "Department",
             "kind" : "item"
           } ]
         }, {
           "EmployeeId" : 121,
           "FirstName" : "Adam",
           "LastName" : "Fripp",
           "Email" : "AFRIPP",
           "JobId" : "ST_MAN",
           "DepartmentId" : 50,
           "Salary" : 8200,
           "links" : [ {
             "rel" : "self",
             "href" : "<base_url>/Department/50/child/Employee/121",
             "name" : "Employee",
             "kind" : "item"
           }, {
             "rel" : "parent",
             "href" : "<base_url>/Department/50",
             "name" : "Department",
             "kind" : "item"
           } ]
         }, {
           ...
           } ]
         } ],
         "count" : 3,
         "hasMore" : false,
         "limit" : 25,
         "offset" : 0,
         "links" : [ {
             "rel" : "self",
             "href" : "<base_url>/Department/50/child/Employee",
             "name" : "Employee",
             "kind" : "collection"
         } ]
       },     
       "links" : [ {
           "rel" : "self",
           "href" : "<base_url>/Department/50",
           "name" : "Department",
           "kind" : "item"
        } ]
    }
    

REST API Frameworkバージョン1またはバージョン2

REST APIフレームワークのバージョン1とバージョン2では、レスポンス・ペイロードに展開されたネストされた子リソースがリソース・アイテムの配列として返されます。 フェッチされるリソース・コレクションが大きい場合は、リソース・アイテムの配列に制限があるため、複数のリクエストを作成する必要がある場合があります。

次のサンプルは、REST APIフレームワーク・バージョン1およびバージョン2の機能を示しています。

最初のリクエストのサンプル(URL 1)は、従業員120によって識別される1つの子リソース・アイテムを取得します。 URLパラメータchildは、リクエストされたリソースEmployeeの関係を識別します。

2番目のリクエスト(URL 2)では、問合せパラメータexpandを使用して、ネストされたすべてのEmployeeリソース・アイテムがDepartmentリソース・コレクション50とともに返されるようにしています。

3番目のリクエスト(URL 3)は、問合せパラメータexpandと組み合せてアクセッサ・ドット表記(たとえば、Employee.JobHistory)を使用して、ネストされたすべてのJobHistoryリソース・アイテムがDepartmentリソース・コレクション80Employeeリソース・アイテムとともに返されるようにします。

Frameworkバージョン1またはバージョン2を使用したリクエスト

  • URL 1

    <base_url>/Department/50/child/Employee/120

  • URL 2

    <base_url>/Department/50?expand=Employee

  • URL 3

    <base_url>/Department/80?expand=Employee.JobHistory&onlyData=true

  • HTTPメソッド

    GET

  • 問合せのパラメータ

    expand

    REST APIフレームワーク・バージョン1と組み合せてこのパラメータを提供すると、指定した子がリソース・ペイロードのリンクとして含められます。 この問合せパラメータの値は、allまたは<accessor1>,<accessor2>,..です。 カンマをセパレータとして使用して複数の子を指定することができます。 例: ?expand=Employee,Localization また、ネストされた子は、Child.NestedChildという形式で提供されます(例): ?expand=Employee.Manager ). ネストされた子が提供されている場合(例: Employee.Manager()欠落した子は暗黙的に処理されます。 たとえば、?expand=Employee.Manager?expand=Employee,Employee.Managerと同じです(EmployeeManagerが展開されます)。

  • Content-Type

    none

  • ペイロード

    none

Framework Version 1またはバージョン2からのレスポンス

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • ペイロード 1

    {
      "EmployeeId" : 120,
      "FirstName" : "Matthew",
      "LastName" : "Weiss",
      "Email" : "MWEISS",
      "JobId" : "ST_MAN",
      "DepartmentId" : 50,
      "Salary" : 8000,
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department/50/child/Employee/120",
        "name" : "Employee",
        "kind" : "item"
      }, {
        "rel" : "parent",
        "href" : "<base_url>/Department/50",
        "name" : "Department",
        "kind" : "item"
      } ]
    }
    
  • ペイロード 2

    {
      "DepartmentId" : 50,
      "DepartmentName" : "Shipping",
      "Employee" : [ {
        "EmployeeId" : 120,
        "FirstName" : "Matthew",
        "LastName" : "Weiss",
        "Email" : "MWEISS",
        "JobId" : "ST_MAN",
        "DepartmentId" : 50,
        "Salary" : 8000,
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/50/child/Employee/120",
          "name" : "Employee",
          "kind" : "item"
        }, {
          "rel" : "parent",
          "href" : "<base_url>/Department/50",
          "name" : "Department",
          "kind" : "item"
        } ]
      }, {
        "EmployeeId" : 121,
        "FirstName" : "Adam",
        "LastName" : "Fripp",
        "Email" : "AFRIPP",
        "JobId" : "ST_MAN",
        "DepartmentId" : 50,
        "Salary" : 8200,
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/50/child/Employee/121",
          "name" : "Employee",
          "kind" : "item"
        }, {
          "rel" : "parent",
          "href" : "<base_url>/Department/50",
          "name" : "Department",
          "kind" : "item"
        } ]
      }, {
         ...
        } ]
      } ],
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department/50",
        "name" : "Department",
        "kind" : "item"
      } ]
    }
    
  • ペイロード 3

    {
        "DepartmentId" : 80,
        "DepartmentName" : "Sales",
        "RelState" : null,
        "Employee" : [
            ...
            {
                "EmployeeId" : 176,
                "FirstName" : "Jonathon",
                "LastName" : "Taylor",
                "Email" : "JTAYLOR",
                "JobId" : "SA_REP",
                "DepartmentId" : 80,
                "Salary" : 8600,
                "CommissionPct" : 0.2,
                "JobHistory" : [
                    {
                        "EmployeeId" : 176,
                        "StartDate" : "2011-03-24",
                        "EndDate" : "2012-12-31",
                        "JobId" : "SA_REP",
                        "DepartmentId" : 80
                    },
                    {
                        "EmployeeId" : 176,
                        "StartDate" : "2013-01-01",
                        "EndDate" : "2015-03-31",
                        "JobId" : "SA_MAN",
                        "DepartmentId" : 80
                    }
                ]
            },
           ...
        ]
    }

ビジネス・オブジェクトのデータのみを取得

REST APIは、リソース・コレクションのデータのみの取り出しをサポートします。

次のサンプルは、Employeeリソース・コレクション属性の値をフェッチします。 問合せパラメータonlyDataは、リソースがフィルタリングされてレスポンス・ペイロード内のデータのみを含み、リンクがないことを保証します。

リクエスト

  • URL

    <base_url>/Employee?onlyData=true

  • HTTPメソッド

    GET

  • 問合せのパラメータ

    onlyData

    このパラメータは、リソース・アイテムのペイロードにデータのみを含めるようにフィルタリングします(リンク・セクションはありません)。

  • Content-Type

    none

  • ペイロード

    none

レスポンス

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • ペイロード

    {
      "items" : [ {
        "EmployeeId" : 101,
        "FirstName" : "Neena",
        "LastName" : "Smith",
        "Email" : "NSMITH",
        "JobId" : "AD_VP",
        "DepartmentId" : 90,
        "Salary" : 2000
      }, {
        "EmployeeId" : 102,
        "FirstName" : "Lex",
        "LastName" : "De Haan",
        "Email" : "LDEHAAN",
        "JobId" : "AD_VP",
        "DepartmentId" : 90,
        "Salary" : 3000
      }, {
        "EmployeeId" : 103,
        "FirstName" : "Alexander",
        "LastName" : "Hunold",
        "Email" : "AHUNOLD",
        "JobId" : "IT_PROG",
        "DepartmentId" : 60,
        "Salary" : 4000
      }, {
        "EmployeeId" : 104,
        "FirstName" : "Bruce",
        "LastName" : "Ernst",
        "Email" : "BERNST",
        "JobId" : "IT_PROG",
        "DepartmentId" : 60,
        "Salary" : 5000
      }, {
        "EmployeeId" : 105,
        "FirstName" : "David",
        "LastName" : "Austin",
        "Email" : "DAUSTIN",
        "JobId" : "IT_PROG",
        "DepartmentId" : 60,
        "Salary" : 6000
      } ],
      "count" : 5,
      "hasMore" : true,
      "limit" : 25,
      "offset" : 0,
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Employee",
        "name" : "Employee",
        "kind" : "collection"
      } ]
    }
    

問合せパラメータを使用したビジネス・オブジェクトのフィルタ処理

REST APIは、問合せ式構文を使用してリソース・コレクションをフェッチしてリソース・アイテムをフィルタリングすることをサポートします。

Webアプリケーションに登録されているREST APIフレームワーク・バージョンに応じて、構文の異なる式を使用して、リソース・コレクションを問い合せることができます。 REST APIフレームワークのバージョンの詳細は、「REST API Frameworkのバージョン・サポートの理解」を参照してください。

次のサンプルは、Departmentリソースの2つの異なるバージョンに基づいています。 リソース1.0を示すURLサンプルには、REST APIフレームワークのバージョン1によってのみサポートされている、例示問合せパラメータ構文が反映されています。 リソース2.0を示すURLサンプルの場合、REST APIフレームワーク・バージョン2 (以降)でサポートされているrowmatch問合せパラメータ構文を反映します。 どちらのフレームワーク・シナリオでも、サンプルは、Departmentリソースのフィルタ処理されたリソース・アイテム・セットをフェッチします。

注意:

REST APIリクエストでは、問合せパラメータ値に表示される予約文字をエンコードする必要があります。 たとえば、タイムスタンプ値の+文字を%2Bとしてエンコードする必要があります。 また、問合せパラメータ操作で使用されるリソース名およびリソース・アイテム名は、大文字と小文字が区別されます。

REST API Frameworkバージョン2 (以降)

REST APIフレームワークのバージョン2から、Webアプリケーションでは、rowmatch式とも呼ばれる詳細な問合せ構文を使用してリソースをフェッチできます。 バージョン2 (以上)で使用可能な問合せ構文の詳細は、「問合せ構文のフレームワーク・サポートの理解」を参照してください。

次のサンプルは、給与が10000である従業員が少なくとも1人いるすべての部署をフェッチします。 これは、親リソース・コレクション(Department)をフェッチし、子リソース・コレクション属性(Employee.Salary)でフィルタリングする例です。

リクエスト例1 Frameworkバージョン2を使用

  • URL

    <base_url>/Department?q=Employee.Salary = 10000

  • HTTPメソッド

    GET

  • 問合せのパラメータ

    q

    このパラメータは、1つ以上の属性値式に基づいてリソース・コレクションをフィルタリングします。 REST APIフレームワーク・バージョン2から、複雑なフィルタでは、andor論理積を使用して、グループ化用の一致するカッコのセットと結合することができます。 たとえば、?q=(Deptno>=10 and <= 30) and (Loc!=NY)です。

  • Content-Type

    none

  • ペイロード

    none

レスポンス例1 From Framework Version 2

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourcecollection+json

  • ペイロード

    {
      "items" : [ {
        "DepartmentId" : 70,
        "DepartmentName" : "Public Relations",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/70",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/70/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      }, {
        "DepartmentId" : 80,
        "DepartmentName" : "Sales",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/820",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/80/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      } ],
      "count" : 2,
      "hasMore" : false,
      "limit" : 25,
      "offset" : 0,
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department",
        "name" : "Department",
        "kind" : "collection"
      } ]
    }
    

次のサンプルは、数字のIDが10、または部門名が文字"H"で始まるすべての部門をフェッチします。

リクエスト例2 Frameworkバージョン2を使用

  • URL

    <base_url>/Department?q=DepartmentId = 10 or DepartmentName like 'H*'

  • HTTPメソッド

    GET

  • 問合せのパラメータ

    q

    このパラメータは、1つ以上の属性値式に基づいてリソース・コレクションをフィルタリングします。 REST APIフレームワーク・バージョン2から、複雑なフィルタでは、andor論理積を使用して、グループ化用の一致するカッコのセットと結合することができます。 たとえば、?q=(Deptno>=10 and <= 30) and (Loc!=NY)です。

  • Content-Type

    none

  • ペイロード

    none

レスポンス例2 From Framework Version 2

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourcecollection+json

  • ペイロード

    {
      "items" : [ {
        "DepartmentId" : 10,
        "DepartmentName" : "Administration",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/10",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/10/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      }, {
        "DepartmentId" : 40,
        "DepartmentName" : "Human Resources",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/40",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/40/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      } ],
      "count" : 2,
      "hasMore" : false,
      "limit" : 25,
      "offset" : 0,
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department",
        "name" : "Department",
        "kind" : "collection"
      } ]
    }
    

REST API Frameworkバージョン1

REST APIフレームワークのバージョン1では、query-by-~xample構文をサポートしています。 この構文を使用するには、バージョン1でのみサポートされているアプリケーション構成の変更は必要ありません。 REST APIフレームワークのバージョン1で使用可能な問合せ構文の詳細は、「GETメソッドのエンドポイント」を参照してください。

注意:

バージョン1のADF RESTフレームワークでは、文字列一致フィルタ・パラメータを使用して問合せを作成し、一致させる文字列に問合せ構文の予約語(ANDまたはORなど)が含まれる場合、引用符で囲まれた文字列は空白文字で区切られて、問合せ式の他のパラメータから区切られる必要があります。 たとえば、次の問合せは、引用符で囲まれた文字列‘Accounting and Finance’をフィルタ処理しようとします。 文字列に予約語ANDが含まれているため、文字列一致フィルタ・パラメータには、単一引用符の前後にバージョン1で有効なスペースが必要です。

?q=DepartmentName= 'Accounting and Finance' &fields=DepartmentName,Location

フレームワーク・バージョン2から開始すると、予約語を含む文字列照合フィルタでスペース文字を区切る必要がなくなります。

次のサンプルは、DepartmentId値が割り当てられた部門を30未満にしてフェッチします。

フレームワーク・バージョンを使用したリクエスト1

  • URL

    <base_url>/Department?q=DepartmentId<30

  • HTTPメソッド

    GET

  • 問合せのパラメータ

    q

    このパラメータは、1つ以上の属性値式に基づいてリソース・コレクションをフィルタリングします。 REST APIフレームワーク・バージョン1では、この問合せパラメータの値は、セミコロンで区切られた問合せ/例の式のリストです。 たとえば、?q=Deptno=10 and <=30;Loc!=NYです。

  • Content-Type

    none

  • ペイロード

    none

Frameworkバージョンからのレスポンス1

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourcecollection+json

  • ペイロード

    {
      "items" : [ {
        "DepartmentId" : 10,
        "DepartmentName" : "Administration",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/10",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/10/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      }, {
        "DepartmentId" : 20,
        "DepartmentName" : "Marketing",
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/20",
          "name" : "Department",
          "kind" : "item"
        }, {
          "rel" : "child",
          "href" : "<base_url>/Department/20/child/Employee",
          "name" : "Employee",
          "kind" : "collection"
        } ]
      } ],
      "count" : 2,
      "hasMore" : false,
      "limit" : 25,
      "offset" : 0,
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department",
        "name" : "Department",
        "kind" : "collection"
      } ]
    }
    

ビジネス・オブジェクト・アイテムの登録

REST APIはHTTP POSTメソッドをサポートしてリソース・アイテムを作成します。

REST APIは、次の作成ユースケースをサポートします:

  • 既存のリソース・コレクションにリソース・アイテムを作成します。

  • 1回の往復で、子アイテムと親リソース・アイテム(各アイテムのリソース・コレクションが子-親関係を形成する)を作成します。

ビジネス・オブジェクト・アイテムの登録

REST APIでは、HTTP POSTメソッドを使用して既存のリソース・コレクションにリソース・アイテムを作成することができます。

次のサンプルは、既存のDepartmentリソース・コレクションに新しいリソース・アイテムを作成します。

リクエスト

  • URL

    <base_url>/Department

  • HTTPメソッド

    POST

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • ペイロード

    {
      "DepartmentId" : 15,
      "DepartmentName" : "NewDept"
    }
    

レスポンス

  • HTTPコード

    201

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • 場所

    <base_url>/Department/15

  • ペイロード

    {
      "DepartmentId" : 15,
      "DepartmentName" : "NewDept",
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department/15",
        "name" : "Department",
        "kind" : "item"
      }, {
        "rel" : "child",
        "href" : "<base_url>/Department/15/child/Employee",
        "name" : "Employee",
        "kind" : "collection"
      } ]
    }
    

子ビジネス・オブジェクトのアイテムの登録

REST APIは、既存の親リソース・コレクションの子リソース・コレクション内にリソース・アイテムを作成することをサポートしています。 また、REST APIは、子アイテムと親アイテムを1回のラウンドトリップで作成することをサポートしています。 親リソース・アイテムである子リソース・アイテムを作成するのは、子リソース・アイテムと親リソース・アイテムの両方が存在しない場合にのみ成功します。

次のサンプルは、POSTメソッドを使用してリソース・アイテムを作成します。 最初のリクエスト・サンプル(URL1)は、Departmentコレクションの既存の親リソース・アイテム15にネストされたEmployeeリソース・コレクション内のemployee 999によって識別された子リソース・アイテムを作成します。 第2のリクエスト(URL2)は、従業員99999によって識別される子リソース・アイテムをEmployeeリソース・コレクションに作成し、Departmentコレクションの親リソース・アイテム17を1回のラウンドトリップで作成します。

リクエスト

  • URL 1

    <base_url>/Department/15/child/Employee

  • URL 2

    <base_url>/Department

  • HTTPメソッド

    POST

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • ペイロード 1

    {
         "EmployeeId": 999,
         "FirstName": "New",
         "LastName": "Guy",
         "Email": "NGUY",
         "JobId": "SA_REP",
         "DepartmentId": 15,
         "Salary": 9999
    }
    
  • ペイロード 2

    {
         "DepartmentId": 17,
         "DepartmentName": "NewerDept",
         "Employee": [
             {
                 "EmployeeId": 99999,
                 "FirstName": "Newer",
                 "LastName": "Guy",
                 "Email": "NRGUY",
                 "JobId": "SA_MAN",
                 "DepartmentId": 17,
                 "Salary": 10001
             }
         ]
    }
    

レスポンス

  • HTTPコード

    201

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • 場所

    <base_url>/Department/15/child/Employee/999

  • ペイロード 1

    {
      "EmployeeId" : 999,
      "FirstName" : "New",
      "LastName" : "Guy",
      "Email" : "NGUY",
      "JobId" : "SA_REP",
      "DepartmentId" : 15,
      "Salary" : 9999,
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department/15/child/Employee/999",
        "name" : "Employee",
        "kind" : "item"
      }, {
        "rel" : "parent",
        "href" : "<base_url>/Department/15",
        "name" : "Department",
        "kind" : "item"
      } ]
    }
    
  • 場所

    <base_url>/Department/17

  • ペイロード 2

    {
      "DepartmentId" : 17,
      "DepartmentName" : "NewerDept",
      "Employee" : [ {
        "EmployeeId" : 99999,
        "FirstName" : "Newer",
        "LastName" : "Guy",
        "Email" : "NRGUY",
        "JobId" : "SA_MAN",
        "DepartmentId" : 17,
        "Salary" : 10001,
        "links" : [ {
          "rel" : "self",
          "href" : "<base_url>/Department/17/child/Employee/99999",
          "name" : "Employee",
          "kind" : "item"
        }, {
          "rel" : "parent",
          "href" : "<base_url>/Department/17",
          "name" : "Department",
          "kind" : "item"
        } ]
      } ],
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department/17",
        "name" : "Department,
        "kind" : "item"
      } ]
    }
    

ビジネス・オブジェクト・アイテムの更新

REST APIは、HTTP PATCHメソッドをサポートしてリソース・アイテムを更新します。

更新は、行がすでに存在する場合にのみ成功します。

次のサンプルは、15部門を更新します。ここで、DepartmentNameはリクエスト・ペイロードで変更されます。

リクエスト

  • URL

    <base_url>/Department/15

  • HTTPメソッド

    PATCH

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • ペイロード

    {
      "DepartmentId" : 15,
      "DepartmentName" : "UpdatedDeptName"
    }
    

レスポンス

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • ペイロード

    {
      "DepartmentId" : 15,
      "DepartmentName" : "UpdatedDeptName",
      "links" : [ {
        "rel" : "self",
        "href" : "<base_url>/Department/15",
        "name" : "Department",
        "kind" : "item"
      }, {
        "rel" : "child",
        "href" : "<base_url>/Department/15/child/Employee",
        "name" : "Employee",
        "kind" : "collection"
      } ]
    }
    

ビジネス・オブジェクト・アイテムの更新または作成(Upsert)

REST APIは、既存のリソース項目を更新するためにUpsertモードが有効になっているPOSTメソッドを使用してサポートし、アイテムが存在しない場合、操作によってアイテムが作成されます。

POSTメソッドを使用し、Upsert-Modeヘッダー値にtrueを指定してUpsert機能を有効にします。 ヘッダー変数Upsert-Modeが提供されていないか、またはfalseに設定されている場合、Upsert機能は無効になります。

次のサンプルは、子Employeeアイテムを持つ新しいDepartmentリソース・アイテムを(Upsertを介して)作成します。 この例では、部門80は存在しますが、従業員8080は存在しません。 リクエストが実行されると、既存の部門80が更新され、リソース・アイテムemployee 8080が作成されます。 部門のアイテムが更新されたため、HTTP 200が返されます。 レスポンスHTTPコード201は、リソース・コレクションが作成され、更新されないときに使用されます。

リクエスト

  • URL

    <base_url>/Department

  • HTTPメソッド

    POST

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • HTTPヘッダー

    Upsert-Mode: true

  • ペイロード

    {
    	"Deptno": 80,
    	"Dname": "ENG80",
    	"Emp": [{
    		"Empno": 8080,
    		"Ename": "Smith",
    		"Mgr": 8080
    	}]
    }

レスポンス

  • HTTPコード

    200

  • Content-Type

    application/vnd.oracle.adf.resourceitem+json

  • ペイロード

    {
    	"Deptno": 80,
    	"Dname": "ENG80",
    	"Emp": [{
    		"Empno": 8080,
    		"Ename": "Smith",
    		"Mgr": 8080
    	}]
    }
    

ビジネス・オブジェクト・アイテムの削除

REST APIは、リソース・アイテムを削除するためのHTTP DELETEメソッドをサポートしています。

REST APIは現在、リソース・コレクションの削除をサポートしていません。

次のサンプル(URL1)は、リソース・アイテム、department 17のemployee 99999を削除します。 2番目のリクエストURLは、リソース・アイテム、department 17を削除します。

リクエスト

  • URL 1

    <base_url>/Department/17/child/Employee/99999

  • URL 2

    <base_url>/Department/17

  • HTTPメソッド

    DELETE

  • Content-Type

    none

  • ペイロード

    none

レスポンス

  • HTTPコード

    204

  • Content-Type

    none

  • ペイロード

    none