2012-10-06 19 views
6

UI'ye güç sağlaması beklenen bir RESTful web servisi kurmaya çalışıyorum. Saf HATEOAS prensipleri ile gidersem, koleksiyonlardaki bireysel kaynakların URI'lerini açığa çıkarmalıyım. Şimdi, bir ebeveyn-çocuk ilişkisi olduğunu ve her ebeveynin 50 çocuğa sahip olabileceğini ve UI'nin, ebeveynler tıklandığında gösterilecek tüm çocuklar için kısmi veriler gerektirdiğini varsayalım.Pure HATEOAS vs çok fazla servis çağrısı yapılıyor

Çocuk URI'lerini yalnızca üst öğe ile birlikte gösterirseniz, kullanıcı arabirimi bunu yapmak için 50 web hizmeti araması yapmak zorunda kalır. Diğer bir yaklaşım ise, sadece URI'lar yerine, çocuklarla ilgili olarak ebeveynleri ve kısmi bilgileri veren ayrı bir API'ye sahip olmaktır. Bunun yaygın bir sorun olduğuna eminim. Burada doğru denge nedir? Bazı tuhaflar nelerdir? "Tek URI" yaklaşımı tasarım açısından daha temizdir, ancak UI'yi gerçekten yavaşlatabilir ve tüm bu servis çağrıları nedeniyle sunucuya çok fazla yük getirebilir. Yani, diğer yaklaşım daha pratik olabilir. Deneyiminizde hangisi daha iyi?

cevap

5

Hiper ortam kısıtlaması gerektirdiği konusunda yanlış yönlendiriliyorsunuz. Üst nesnenin bir temsilinde çocuk nesnelerinizden bilgi ekleyemeyeceğinizi söyleyen hiçbir şey yoktur. Aslında bu tam olarak Hal (bir hiper ortam türü) etkinleştirmek için tasarlandı.

+0

k .. teşekkürler! Fakat pratikte, çok fazla arama yapmak zorunda kalmanız gerçekten çok acı veriyor mu? –

+1

@ Raze2dust Yedeklemeniz gereken bağlantıların çoğunu özel olarak güvenle önbelleğe alın. Bu yüzden, çok sayıda HTTP çağrısı gibi görünse de, çoğu ağ turu gezileri en iyi duruma getirilebilir. Çocuk kaynaklarının bölümlerini ana temsile yerleştirmekle birlikte, çok ağ etkili bir API oluşturabilirsiniz. –

+0

HAL'ın kullanabilme kabiliyetini etkilemesine rağmen, vanilya http önbelleğini kullanamayacağınız gibi HAL'ın yerleştirmesini kullanabilirsiniz. Ya da (gömülüği göz ardı edebilirseniz), önbelleği etkin bir şekilde kullanmıyorsunuz demektir. – dietbuddha