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を指定することにより、再帰の深さを制限せずに検索を指定することができます。

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




All Articles