Świetne odpowiedzi - chciałem tylko wyjaśnić niektóre komentarze. JSON-RPC jest szybki i łatwy w użyciu, ale jak wspomniano, zasoby i parametry są ściśle powiązane i zwykle polegają na czasownikach (api / deleteUser, api / addUser) przy użyciu GET / POST, ponieważ REST zapewnia luźno powiązane zasoby (api / użytkownicy), że w interfejsie API REST HTTP korzysta z kilku metod HTTP (GET, POST, PUT, PATCH, DELETE). REST jest nieco trudniejszy do wdrożenia dla niedoświadczonych programistów, ale styl ten stał się teraz dość powszechnym miejscem i zapewnia znacznie większą elastyczność w dłuższej perspektywie (dając API dłuższą żywotność).
Oprócz tego, że nie ma ściśle powiązanych zasobów, REST pozwala także uniknąć zaangażowania się w jeden typ zawartości - oznacza to, że jeśli twój klient musi odbierać dane w formacie XML, JSON, a nawet YAML - jeśli jest wbudowany w twój system, możesz zwraca dowolną z tych, które używają nagłówków content-type / accept.
Dzięki temu interfejs API jest wystarczająco elastyczny, aby obsługiwać nowe typy zawartości LUB wymagania klienta.
Ale to, co naprawdę odróżnia REST od JSON-RPC, to to, że jest zgodny z serią starannie przemyślanych ograniczeń, zapewniając elastyczność architektoniczną. Ograniczenia te obejmują zapewnienie, że klient i serwer mogą ewoluować niezależnie od siebie (możesz wprowadzać zmiany bez zepsucia aplikacji klienta), połączenia są bezstanowe (stan jest reprezentowany przez hipermedia), zapewniony jest jednolity interfejs do interakcji, interfejs API został opracowany w systemie warstwowym, a odpowiedź jest buforowana przez klienta. Istnieje również opcjonalne ograniczenie dostarczania kodu na żądanie.
Jednak z tym wszystkim powiedziane - MOST API nie są RESTful (zgodnie z Fieldingiem), ponieważ nie zawierają hipermediów (osadzone łącza hipertekstowe w odpowiedzi, które pomagają nawigować po API). Większość interfejsów API, które można znaleźć, jest podobnych do REST, ponieważ są zgodne z większością pojęć REST, ale ignorują to ograniczenie. Jednak coraz więcej interfejsów API implementuje to i staje się coraz bardziej praktyką głównego nurtu.
Daje to również pewną elastyczność, ponieważ interfejsy API sterowane przez hipermedia (takie jak Stormpath) kierują klienta do identyfikatorów URI (co oznacza, że jeśli coś się zmieni, w niektórych przypadkach można zmodyfikować identyfikator URI bez negatywnego wpływu), podobnie jak w przypadku identyfikatorów URI RPC statyczny. W przypadku RPC konieczne będzie także obszerne udokumentowanie różnych identyfikatorów URI i wyjaśnienie, w jaki sposób działają one względem siebie.
Ogólnie rzecz biorąc, powiedziałbym, że REST jest dobrym rozwiązaniem, jeśli chcesz zbudować elastyczny, elastyczny interfejs API, który będzie trwały. Z tego powodu powiedziałbym, że jest to droga do pokonania w 99% przypadków.
Powodzenia, Mike