OData REST APIと再帰クエリ

前の記事への議論の中で、 dezconnectは、再帰クエリを実行するODataの機能(SQL CTEと同様)について興味深い質問を提起しました。

セクション11.2.4.2のODataドキュメントでは、 $ expand queryオプションについて説明しています。 このオプションを使用すると、オブジェクトと関連オブジェクトを取得できます。 たとえば、会社に関するデータと社長に関するすべてのデータを取得できます。
https://samples.databoom.space/api1/sampledb/collections/companies(company1)?$expand=president

$展開オプションがない場合、結果には会社の社長のID(または他の設定とのリンク)のみが含まれます。
https://samples.databoom.space/api1/sampledb/collections/companies(company1)

ODataの4番目のバージョンでは、再帰クエリを実行するための$ expandオプションが大幅に拡張されました。

たとえば、ある人には友達がいて、その友達にも友達がいるので、友達のツリー全体を取得したいとします。 このような再帰クエリを記述しやすくするために、ODataには、再帰の深さを決定する追加の$レベルオプションが導入されています。

http:// yourhost / service / yourdatabase / person(1)?$ expand = friends($ level = 2)

このリクエストは、深さ= 2のツリー(友人による)を構築します。

$ levels = maxを指定することにより、再帰の深さを制限せずに検索を指定することができます。
しかし、この場合、循環債券の問題が発生します。 標準では、循環接続が存在する場合に何を行うかは規定されていません。したがって、この場合、再帰の深さを特定の値に制限する必要があります。

Source: https://habr.com/ru/post/J251185/


All Articles