훌륭한 답변-일부 의견을 명확히하고 싶었습니다. JSON-RPC는 빠르고 사용하기 쉽지만 언급 된 리소스와 매개 변수가 밀접하게 결합되어 있으며 REST는 느슨하게 결합 된 자원 (api / HTTP REST API에서 여러 HTTP 메소드 (GET, POST, PUT, PATCH, DELETE)를 사용합니다. REST는 경험이 부족한 개발자가 구현하기가 약간 어렵지만 이제는 스타일이 상당히 일반화되어 장기적으로 훨씬 더 많은 유연성을 제공합니다 (API 수명 연장).
REST는 리소스가 밀접하게 결합되지 않은 상태에서 단일 컨텐츠 유형에 전념하지 않도록합니다. 즉, 클라이언트가 XML, JSON 또는 YAML로 데이터를 수신해야하는 경우 시스템에 내장 된 경우 content-type / accept 헤더를 사용하는 것을 반환하십시오.
이를 통해 새로운 컨텐츠 유형 또는 클라이언트 요구 사항을 지원할 수 있도록 API를 유연하게 유지할 수 있습니다.
그러나 REST를 JSON-RPC와 진정으로 분리시키는 것은 아키텍처 유연성을 보장하면서 신중하게 고려 된 일련의 제약 조건을 따른다는 것입니다. 이러한 제약 조건에는 클라이언트와 서버가 서로 독립적으로 진화 할 수 있도록하는 것 (클라이언트의 응용 프로그램을 망칠 필요없이 변경 가능), 호출이 상태 비 저장 (상태가 하이퍼 미디어를 통해 표시됨), 상호 작용을위한 균일 한 인터페이스 제공, API는 계층화 된 시스템에서 개발되며 클라이언트가 응답을 캐시 할 수 있습니다. 주문형 코드를 제공하기위한 선택적 제약도 있습니다.
그러나이 모든 말로-MOST API는 하이퍼 미디어 (API 탐색을 돕는 응답에 포함 된 하이퍼 텍스트 링크)를 포함하지 않기 때문에 RESTing (Fielding에 따르면)이 아닙니다. 대부분의 API는 REST와 유사하며 REST의 개념 대부분을 따르지만이 제한 조건은 무시한다는 점에서 REST와 유사합니다. 그러나 점점 더 많은 API가이를 구현하고 있으며 더 많은 주류 관행이되고 있습니다.
또한 RPC 경로와 마찬가지로 하이퍼 미디어 기반 API (예 : Stormpath)가 클라이언트를 URI로 향하게하기 때문에 유연성이 있습니다 ( 어떤 경우 변경 없이 부정적인 영향을주지 않고 URI를 수정할 수 있음). 공전. RPC를 사용하면 이러한 서로 다른 URI를 광범위하게 문서화하고 서로 관련하여 작동하는 방식을 설명해야합니다.
일반적으로, 오래 지속되는 확장 가능하고 유연한 API를 구축하려는 경우 REST를 사용하는 것이 좋습니다. 이런 이유로, 나는 그것이 시간의 99 %를가는 경로라고 말할 것입니다.
행운을 빌어, 마이크