Ich versuche eine Rest-API für eine Android-App zu erstellen. Angenommen , ich habe eine usersTabelle mit (id, name, email)und einen songsTisch mit (id, song_name, album)und eine reiche verbinden Verbindung zwischen ihnen als streamsmit (user_id, song_id, listen_count). Ich möchte Details zu allen Streams abrufen und in der App als Liste anzeigen. Die Liste würde den Songnamen, den Albumnamen, den Benutzernamen und die Höranzahl anzeigen. Ich sehe drei plausible Optionen -
GETauf/streamsund eine Liste aller Abrufsong_idsunduser_ids. Machen Sie dannGETzu/user/:idund/song/:idfür jeden Benutzer und jede Song-ID, um die Benutzer- und Song-Informationen zu erhalten.GETauf/streamsund eine Liste aller Abrufuser_idsundsong_ids. Dann , einesGETzu/user?ids=<comma_separated_ids>holen Informationen über alle Benutzer undGETzusong?ids=<comma_separated_ids>Informationen über alle Songs zu holen.GETzu/streamsund alles in einem Aufruf zu holen. Etwas wie -[ { "user_id" : 10, "song_id" : 14, "listen_count" : 5, "user" : { "id" : 10, "name" : "bla", "email" : "bla", }, "song" : { "id" : 14, "name" : "blu", "album" : "blu" } }, ... ]
Ich bin versucht, Option 3 zu wählen, weil es mir alles in einem Anruf gibt, aber ich denke nicht, dass es sehr ruhig ist und ich befürchte, dass es nicht skalierbar ist. Option 2 ist gut, aber es sind 3 Anrufe erforderlich, was ein erhebliches Laden der Liste bedeuten würde. Und Option 1 folgt auf Ruhe, nimmt jedoch zahlreiche Anrufe entgegen, um die Liste anzuzeigen, und so viele Anrufe von einem mobilen Gerät aus sind nicht möglich.
Was wäre der empfohlene Weg, um dies zu tun?