AndroidアプリのREST APIを構築しようとしています。私が持っていると仮定usersして、テーブル(id, name, email)とsongsを持つテーブルを(id, song_name, album)、豊富なとして、それらの間の関連を参加しstreamsました(user_id, song_id, listen_count)。すべてのストリームの詳細を取得して、アプリにリストとして表示したい。リストには、曲名、アルバム名、ユーザー名、聴取数が表示されます。私は3つのもっともらしいオプションを見ます-
GET/streamsすべてのリストフェッチsong_idsとをuser_ids。次に作るGETに/user/:idして/song/:id、ユーザーと曲の情報を取得するために、各ユーザと楽曲IDのために。GET/streamsすべてのリストフェッチuser_idsとをsong_ids。次に、すべてのユーザーに関する情報を取得GETする/user?ids=<comma_separated_ids>ために1つ、すべての曲に関する情報を取得するGETためsong?ids=<comma_separated_ids>に1つ。GET/streams1回の呼び出しですべてを取得します。何かのようなもの -[ { "user_id" : 10, "song_id" : 14, "listen_count" : 5, "user" : { "id" : 10, "name" : "bla", "email" : "bla", }, "song" : { "id" : 14, "name" : "blu", "album" : "blu" } }, ... ]
オプション3で一回の呼び出しですべてが得られるので、私は誘惑に駆られます。しかし、それは非常に休むことはないと思いますし、スケーラブルではないのではないかと心配しています。オプション2は適切ですが、3回の呼び出しが必要であるため、リストのロードにかなりの時間がかかります。オプション1は残りの部分に従いますが、リストを表示するために多くの呼び出しが必要になるため、モバイルデバイスからの多くの呼び出しは実行できません。
これに対処するために推奨される方法は何ですか?