OData REST API-小さなトリック(パート3)

ODataプロトコルを使用する機能に関する一連の投稿を続けます( パート1パート2を参照)。



ODataは、標準のHTTP要求POST、PATCH、およびPUTを使用してオブジェクトを作成および更新できることを規定しています。 リクエストの本文には、データベースに更新または追加するオブジェクトのJSON記述が含まれている必要があります。



追加されたオブジェクトが存在しない場合、新しいオブジェクトが作成されます。

オブジェクトが存在する場合、動作は異なります。





4.関連オブジェクトとともに複雑なオブジェクトを追加する



OData標準のテキストでは、いくつかの重要なフレーズが失われました。

適切なインライン表現を使用して表される関連エンティティを含むエンティティを作成する要求は、「ディープインサート」と呼ばれます。成功すると、 サービスはすべてのエンティティを作成し、それらを関連付ける必要があります


その結果、ODataを使用してオブジェクトを子オブジェクトとともに追加できることを誰もが知っているわけではありません。 たとえば、著者とともに新しい本を本のコレクションに追加できます。



{ "id": "book1", "title": "Cannibal's Cookbook", "author":[ { "id": "person45", "collections": [{ "id": "persons" }, { "id": "writers" }], "firstname": "John", "lastname": "Doe", "age": 69, "likes": [{ "id": "book55" }, { "id": "book19" }, { "id": "book66" }] }, { "id": "person191", "collections": [{ "id": "persons" }, { "id": "experts" }], "firstname": "Lamar", "lastname": "Courtenay", "age": 37, "likes": [{ "id": "book186" }, { "id": "book18" }, { "id": "book31" }] } ] }
      
      





標準に従って、必要なすべてのオブジェクトが作成(またはアップグレード)され、それらの間に接続が確立されます。 その後、本、または著者と一緒に本を手に入れ、人々(新しい人を含む)のリスト、作家、専門家、本を手に入れた人などを手に入れます ( パート1パート2を参照)



5.オブジェクト間のリンクの確立



1.ネストされたオブジェクトとともにオブジェクトを追加する機能があるため、 単純にオブジェクト間の関係を確立できます



上記の例では、いいねフィールドがある著者の本を追加しました

「いいね」:[{"id": "book186"}、{"id": "book18"}、{"id": "book31"}]



標準に従って、すべての書籍が作成され(すでに存在する場合はアップグレードされます)、個人とお気に入りの書籍の間にリンクが確立されます。 ただし、本にはidフィールドしかないため、更新するものはありません。リンクを設定するだけです。



2. 接続を確立する別の方法があります



id = 'person191'の人のお気に入りの本のリストは、URLから入手できます

... /人(person191)/好き

このURLを使用してPUT、POST、またはPATCHリクエストを送信することで、書籍を追加できます



注:ODataは、オブジェクトが他の多くのオブジェクトを参照でき、多くのオブジェクトがそれらを一度に参照できることを前提としています。 本には複数の著者を含めることができ、著者は多くの本を書くことができます。 人は、同時に学生と教師の両方になることができます。 オブジェクトは一度に多くのコレクションに属することができます。






この投稿に興味がある場合は、 REST APIの使用例とJavaScriptライブラリの使用例もご覧ください。



続行するには...



All Articles