REST APIは複数のリソースを単一の複合リソースとして返すことができますか?
REST APIの作成を進めており、現在、次の問題が発生しています。 Foo最初のリソースです。CRUD操作は/foo/URI を介して適用できます。 Bar2番目のリソースです。CRUD操作は/bar/URI を介して適用できます。 Every Fooは0または1に関連付けられていますBar。のBarサブリソースとして扱わないのFooはBar、複数Fooのs 間で同じインスタンスを共有できるためです。ですから、の代わりに独立したURI経由でアクセスする方がよいと考えました/foo/[id]/bar。 私の問題は、かなりの場合、インスタンスを要求するクライアントがFoo関連するインスタンスにも関心があることBarです。現在、これは、1つではなく2つのクエリを実行する必要があることを意味します。1つのクエリで両方のオブジェクトを取得できる方法を紹介したいのですが、そのためのAPIをモデル化する方法がわかりません。これまでに思いついたこと: 次のようなクエリパラメータを導入できます/foo/[id]?include_bar=true。このアプローチの問題は、応答のリソース表現(JSON構造など)が異なるように見える必要がある(たとえば、{ foo: ..., bar: ... }単にシリアライズされたものではなく、コンテナーなどFoo)ため、Fooリソースエンドポイントが「異種」になることです。それは良いことではないと思います。をクエリする場合/foo、クライアントはクエリパラメータに関係なく、常に同じリソース表現(構造)を取得する必要があります。 もう1つのアイデアは、新しい読み取り専用エンドポイントを導入すること/fooandbar/[foo-id]です。この場合、のような表現を返すことは問題ありません。これ{ foo: ..., bar: ... }は、fooandbarリソースの「公式」表現にすぎないためです。ただし、そのようなヘルパーエンドポイントが本当にRESTfulであるかどうかはわかりません(これが質問のタイトルに「can」と書いた理由です。もちろん、技術的には可能ですが、それが良いアイデアかどうかはわかりません)。 どう思いますか?他の可能性はありますか?