Opsi 1 (beberapa panggilan async) adalah pilihan terbaik karena:
- setiap panggilan individu adalah entitasnya sendiri , sehingga Anda dapat mencoba lagi secara individual jika terjadi sesuatu yang gagal. Dalam arsitektur monolitik 'satu panggilan', jika satu hal gagal, Anda harus melakukan seluruh panggilan lagi
- kode sisi server akan lebih sederhana: lagi, modularitas , artinya pengembang yang berbeda dapat bekerja pada sumber daya API yang berbeda
- Dalam pola MVC yang khas , tidak masuk akal untuk memiliki satu panggilan API memuat banyak sumber daya terpisah ; misalnya, jika Anda membuat permintaan untuk
/products
mendapatkan daftar produk untuk ditampilkan pada halaman, dan Anda juga ingin menampilkan daftar lokasi tempat produk populer dijual, Anda memiliki dua sumber daya terpisah: Product
dan Location
. Meskipun mereka ditampilkan pada halaman yang sama, Anda tidak dapat secara logis melakukan panggilan ke /products
dan memilikinya juga mengembalikan lokasi
- laporan logging / utilisasi Anda akan lebih sederhana dalam pendekatan modular. Jika Anda membuat permintaan ke
/products
dan Anda juga memuat lokasi, file log Anda akan sangat membingungkan
- jika Anda memiliki masalah dengan sumber daya tertentu, pendekatan satu panggilan akan menyebabkan seluruh halaman rusak dan tidak jelas bagi pengguna Anda apa yang rusak - dan ini berarti akan lebih lama bagi tim Anda untuk memperbaiki masalah; Namun, dalam pendekatan modular jika satu hal rusak, akan sangat jelas apa yang rusak dan Anda dapat memperbaikinya lebih cepat. Itu juga tidak akan merusak sisa halaman (kecuali semuanya terlalu dekat ...)
- akan lebih mudah untuk membuat perubahan secara umum jika semuanya terpisah; jika Anda memiliki 5 sumber daya yang dimuat oleh satu panggilan API, akan lebih sulit untuk mengetahui cara tidak merusak sesuatu ketika Anda ingin mengubah sesuatu
Intinya adalah bahwa sumber daya terpisah, dan dalam REST API mengembalikan banyak sumber daya terpisah dari satu jalur API tidak masuk akal, bahkan jika Anda "menyimpan koneksi ke server". Omong-omong, menggunakan parameter untuk memuat sumber (berbeda) secara kondisional tidak TENANG.
Semua yang dikatakan, satu-satunya pilihan logis adalah membuat beberapa permintaan async untuk memisahkan sumber daya: ambil pendekatan modular !
PS - Jangan terlalu cepat mengoptimalkan "koneksi ke server", terutama ketika koneksi HTTP sangat rendah dan Anda menggunakan LAN. Pemikiran seperti itu alih-alih memilih desain yang lebih sederhana segera akan membuat Anda kesulitan nanti.