Mobil tarafta yeni bir iOS uygulaması projesi üzerinde çalışıyorum. Bazı mimari değişiklikler yaşanıyor ve geliştirdiğimiz uygulama tarafından ve ayrıca web sitesi gibi diğer müşteriler tarafından kullanılacak özel bir özel API'ye güvenmek zorunda kalacağız.
Tasarlanan API, HTTP fiilleriyle eşlenen kaynak merkezli URI ve CRUD işlemlerinin Dinlenme stilini takip eder. gibi şeyler:
GET www.example.com/books
DELETE www.example.com/books/482094
POST www.example.com/users/6793
Sorun, bu tarzın genellikle mobil istemcinin, tek bir uygulama ekranı yüklemek veya tek bir kullanıcı UI eylemini yönetmek için birçok istek yapma ihtiyacına yol açmasıdır. Bu, uygulamanın gereken her şeyi alana kadar 8 saniye boyunca yükleme modunda olmasına neden olur. Yavaş ve tepkisiz bir uygulama.
Mobil müşterilerin bağlantı söz konusu olduğunda ciddi kısıtlamaları vardır ve bu nedenle ideal olarak bu tür bir kurala uymalıyız:
1 ekran == 1 API çağrısı
1 kaydet == 1 API çağrısı.
Bunun sizi REST tasarım ilkeleri ile çarpışma rotasına sokması için birçok durum var, örneğin:
- Diyelim ki uygulamanız bir gündür çevrimdışıydı ve arka uç veritabanlarının dört tablosu ile senkronize etmeniz ve
www.example.com/sync_everything?since=2015-07-24
- Diyelim ki kullanıcının nesnelerinin çoğunu düzenleyebileceği bir ekran var, örneğin yapılacaklar listesindeki görevleri işaretleyerek. Tüm bu görev kayıtlarını düzenleme başına bir API çağrısı yerine tek bir toplu API çağrısında düzenlemenin bir yolu olmalıdır.
- SİPARİŞ, SALESMEN ve PRODUCT db tablolarından gelen bilgileri karıştıran bir ekran olduğunu varsayalım, bu verileri üç yerine bir aramada almalıyım.
risk şu ki, orada en Restful API'sine sahip olabiliriz ve aynı zamanda orada en yararsız mobil uygulama da var.
Mesele şu ki, orada sadece yeni bir müteahhitim ve ihtiyacım olan bu noktaları anlamama yardımcı olan bir şey, saygın kaynaklardan gelen bazı makaleler veya buna benzer şeyler. Mobil müşterileri için REST stilinden ödün veren belli başlı oyuncular (örneğin: birleşik toplam API bitiş noktaları kullanarak).
Veya bu genel sorun için herhangi bir çözüm. Teşekkürler!