Harika cevaplar - sadece bazı yorumlara açıklık getirmek istedim. JSON-RPC'nin kullanımı hızlı ve kolaydır, ancak bahsedilen kaynaklar ve parametreler sıkıca bağlanır ve REST gevşek bağlanmış kaynaklar (api / HTTP REST API'sindeki çeşitli HTTP yöntemlerine (GET, POST, PUT, PATCH, DELETE) dayanmaktadır. REST, deneyimsiz geliştiricilerin uygulaması için biraz daha zordur, ancak stil şimdi oldukça yaygın bir yer haline gelmiştir ve uzun vadede çok daha fazla esneklik sağlar (API'nize daha uzun bir ömür sağlar).
Sıkı birleştirilmiş kaynaklara sahip olmamanın yanı sıra, REST ayrıca tek bir içerik türüne bağlı kalmaktan kaçınmanıza izin verir - bu, müşterinizin verileri XML, JSON veya hatta YAML'de alması gerekiyorsa - sisteminizde yerleşikse content-type / accept başlıklarını kullananlardan herhangi birini döndürür.
Bu, API'nızı yeni içerik türlerini VEYA istemci gereksinimlerini destekleyecek kadar esnek tutmanıza olanak tanır.
Ancak REST'i JSON-RPC'den gerçekten ayıran şey, mimari esnekliği garanti eden bir dizi dikkatle düşünülmüş kısıtlamayı takip etmesidir. Bu kısıtlamalar arasında, istemci ve sunucunun birbirinden bağımsız olarak evrimleşebilmesini sağlamak (müşterinizin uygulamasını bozmadan değişiklikler yapabilirsiniz), çağrılar vatansızdır (durum hipermedya ile temsil edilir), etkileşimler için tek tip bir arayüz sağlanır, API katmanlı bir sistemde geliştirilmiştir ve yanıt istemci tarafından önbelleğe alınabilir. İsteğe bağlı kod sağlama konusunda isteğe bağlı bir kısıtlama da vardır.
Bununla birlikte, tüm bunlar ile - MOST API'leri, hiper ortam (API'da gezinmeye yardımcı olan yanıtta gömülü hipermetin bağlantıları) içermediğinden RESTful (Fielding'e göre) değildir. Bulabileceğiniz çoğu API, REST kavramlarının çoğunu takip etmeleri, ancak bu kısıtlamayı görmezden gelmeleri nedeniyle REST benzeri olduğunu göreceksiniz. Bununla birlikte, giderek daha fazla API bunu uygulamaktadır ve giderek daha fazla ana akış uygulaması haline gelmektedir.
Bu aynı zamanda, hiper ortam tarafından yönlendirilen API'ler (Stormpath gibi) istemciyi URI'lara yönlendirdiği için esneklik sağlar (yani, bir şey değişirse, bazı durumlarda URI'yi olumsuz etki olmadan değiştirebilirsiniz), burada RPC URI'larında olduğu gibi statik. RPC ile, bu farklı URI'ları kapsamlı bir şekilde belgelemeniz ve birbirleriyle ilişkili olarak nasıl çalıştıklarını açıklamanız gerekecektir.
Genel olarak, uzun ömürlü olacak, genişletilebilir, esnek bir API oluşturmak istiyorsanız REST'in gitmenin yolu olduğunu söyleyebilirim. Bu nedenle, zamanın% 99'una giden yol olduğunu söyleyebilirim.
İyi şanslar, Mike