私は多くのbar
を含むRESTリソースfoo
を持っていて、それぞれには多くのbaz
が含まれています。これら3つのリソースはすべて一意のIDを持っていますが、bar
はその文脈なしでは意味がありません。foo
RESTfulなサブリソースのエンドポイントにリソースIDを含めるべきですか?
GET {api}\foo // Returns an array of foos
GET {api}\foo\{fooId} // Returns a foo
GET {api}\foo\{fooId}\bar // An array of bars belonging to this foo
GET {api}\foo\{fooId}\bar\{barId} // Returns a bar
GET {api}\foo\{fooId}\bar\{barId}\baz // An array of bazs belonging to this bar
GET {api}\foo\{fooId}\bar\{barId}\baz\{bazId} // Returns a baz
FOOモデルはそのバーのサブリソースが含まれていませんが、バーモデルは、すべて彼らのbazsが含まれています。
現在のエンドポイントのデザインは、この(これらの全てが必要である)のように見えます。
idsが一意であるため、すべてのidsを含める必要はありません(特定のバーのみに興味がある場合は、親のfooも知る必要があるため)。 :
GET {api}\foo // Returns an array of foos
GET {api}\foo\{fooId} // Returns a foo
GET {api}\foo\{fooId}\bar // An array of bars belonging to this foo
GET {api}\foo\bar\{barId} // Returns a bar
GET {api}\foo\bar\{barId}\baz // An array of bazs belonging to this bar
GET {api}\foo\bar\baz\{bazId} // Returns a baz
私は、一意の識別子とサブリソースのエンドポイントのいずれかのRESTfulな規則を記述したドキュメントを見つけることができない最も理にかなっているか、私が考慮されていない第3の選択肢があり、これら二つのオプションのどちら
。??