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
/streams
1回の呼び出しですべてを取得します。何かのようなもの -[ { "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は残りの部分に従いますが、リストを表示するために多くの呼び出しが必要になるため、モバイルデバイスからの多くの呼び出しは実行できません。
これに対処するために推奨される方法は何ですか?