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 users
bảng với (id, name, email)
và một songs
bảng với (id, song_name, album)
và một hiệp hội tham gia phong phú giữa chúng như streams
có (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/streams
và lấy một danh sách của tất cảsong_ids
vàuser_ids
. Sau đó hãyGET
đến/user/:id
và/song/:id
cho 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/streams
và lấy một danh sách của tất cảuser_ids
và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/streams
và 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?