Seçenek 1 (birden fazla zaman uyumsuz çağrı) en iyi seçimdir çünkü:
- her bir çağrı kendi varlığıdır , bu nedenle bir şeylerin başarısız olması durumunda ayrı ayrı yeniden deneyebilirsiniz. Monolitik 'tek çağrı' mimarisinde, bir şey başarısız olursa tüm çağrıyı tekrar yapmanız gerekir
- sunucu tarafı kodu daha basit olacaktır: yine, modülerlik , farklı geliştiricilerin farklı API kaynakları üzerinde çalışabileceği anlamına gelir
- Tipik bir MVC modelinde , bir API çağrısının birden fazla ayrı kaynak yüklemesi mantıklı değildir ; örneğin,
/products
bir sayfada gösterilecek ürünlerin listesini almak için istekte bulunursanız ve ayrıca popüler ürünlerin satıldığı konumların bir listesini görüntülemek istiyorsanız, iki ayrı kaynağınız vardır: Product
ve Location
. Aynı sayfada görüntülenmelerine rağmen, mantıklı bir şekilde arama yapamaz /products
ve konumlarını da döndürmesini sağlayamazsınız
- günlük / kullanım raporlarınız modüler yaklaşımda daha basit olacaktır. Bir istekte bulunursanız
/products
ve ayrıca konumlar yüklüyorsanız, günlük dosyalarınız gerçekten kafa karıştırıcı olacaktır
- belirli bir kaynakla ilgili bir sorununuz varsa, tek arama yaklaşımı sayfanın tamamının kırılmasına neden olur ve kullanıcılarınız için neyin kırıldığı açık değildir - bu, ekibinizin sorunu düzeltmesinin daha uzun süreceği anlamına gelir; Bununla birlikte, bir şey kırılırsa modüler yaklaşımda, neyin kırıldığı çok açık olacak ve daha hızlı düzeltebilirsiniz. Ayrıca sayfanın geri kalanını da mahvetmeyecek (işler çok yakından birleştirilmedikçe ...)
- işler ayrılırsa genel olarak değişiklik yapmak daha kolay olacaktır; Bir API çağrısı tarafından yüklenen 5 kaynağınız varsa, bir şeyi değiştirmek istediğinizde bir şeyleri nasıl kırmayacağınızı bulmak daha zor olacaktır
Asıl mesele, kaynakların ayrı olması ve bir REST API'sinde, tek bir API yolundan birçok ayrı kaynak döndürmek, "sunucuya bağlantıları kaydediyor olsanız bile" mantıklı değildir. Bu arada, koşullu olarak (farklı) kaynakları yüklemek için parametreleri kullanmak RESTful değildir.
Tüm bunlar, tek mantıklı seçenek, kaynakları ayırmak için birden fazla zaman uyumsuz istek yapmaktır: modüler yaklaşımı kullanın !
PS - Özellikle HTTP bağlantıları aşırı düşük yükte ve bir LAN'dayken, "sunucuya olan bağlantıları" erken optimize etmeyin. Yarasadan daha basit tasarımı seçmek yerine bu tür bir düşünme daha sonra başınızı belaya sokacaktır.