Tôi đang cố gắng xây dựng một API còn lại cho một ứng dụng Android. Giả sử tôi có một usersbảng với (id, name, email)và một songsbảng với (id, song_name, album)và một hiệp hội tham gia phong phú giữa chúng như streamscó (user_id, song_id, listen_count). Tôi muốn tìm nạp thông tin chi tiết về tất cả các luồng và hiển thị nó trong ứng dụng dưới dạng danh sách. Danh sách sẽ hiển thị tên bài hát, tên album, tên người dùng và số lượt nghe. Tôi thấy ba lựa chọn hợp lý -
GETđến/streamsvà lấy một danh sách của tất cảsong_idsvàuser_ids. Sau đó hãyGETđến/user/:idvà/song/:idcho mỗi người dùng và bài hát id để có được những người dùng và thông tin bài hát.GETđến/streamsvà lấy một danh sách của tất cảuser_idsvàsong_ids. Rồi mộtGETđến/user?ids=<comma_separated_ids>để lấy thông tin về tất cả những người sử dụng và mộtGETđểsong?ids=<comma_separated_ids>để lấy thông tin về tất cả các bài hát.GETđến/streamsvà lấy mọi thứ trong một cuộc gọi. Cái gì đó như -[ { "user_id" : 10, "song_id" : 14, "listen_count" : 5, "user" : { "id" : 10, "name" : "bla", "email" : "bla", }, "song" : { "id" : 14, "name" : "blu", "album" : "blu" } }, ... ]
Tôi muốn đi với tùy chọn 3 vì nó mang lại cho tôi mọi thứ trong một cuộc gọi, nhưng tôi không nghĩ nó rất đầy đủ và tôi sợ rằng nó sẽ không thể mở rộng được. Tùy chọn 2 là tốt nhưng phải mất 3 cuộc gọi, điều đó có nghĩa là thời gian tải danh sách đáng kể. Và tùy chọn 1 theo phần còn lại nhưng sẽ nhận được nhiều cuộc gọi để hiển thị danh sách và thực hiện nhiều cuộc gọi từ thiết bị di động là không khả thi.
Điều gì sẽ là cách được đề nghị để đi về điều này?