JEP's Diary

JSON-RPC vs REST 본문

Development/개념, 이론

JSON-RPC vs REST

지으니88 2022. 2. 16. 21:09

JSON-RPC*(Remote Procedure Call)

JSON으로 인코딩된 원격 프로시저 호출이다. 매우 간단한 프로토콜로서, 소량의 데이터 타입과 명령들만을 정의하고 있다. 다수의 호출이 서버로 전송되고 순서없이 응답되는 것을 허용한다. 

 

특징

TCP위에서 동작하므로 좀 더 다양한 프로토콜에서 사용할 수 있다. 

하나의 엔드포인트 URL에서 모든 요청과 응답을 받는다.

JSON-RPC가 HTTP에서 동작하는 경우 하나의 Method를 통해서 통신하게 된다. 

CRUD를 포함한 다양한 action을 나타내는 작업을 표현할 수 있다. 

요청

하나의 리모트 메소드는 HTTP 혹은 TCP/IP 소켓을 사용해 리모트 서비스로 요청을 보내는 것에 의해 호출된다. 

하나의 요청은 리모트 시스템에 의해 제공되는 특정한 메소드에 대한 호출이다. 요청은 다음 3가지의 속성을 포함해야한다.

  • method - 호출될 메소드의 이름 문자열
  • params - 정의된 메소드에 대한 파라미터로서 전달될 객체들의 배열
  • id - 임의 타입의 값. 이것은 요청에 대해 대응되는 응답을 매치시킨다. 

응답

요청의 수신자는 모든 수신된 요청에 대해 유효한 응답으로 답해야 한다. 응답은 아래의 속성들을 포함해야한다.

  • result - 호출된 메소드에 의해 반환되는 데이터. 메소드 호출 중 에러가 발생하면 이 값은 null
  • error - 메소드 호출 중 에러가 있었으면 특정한 에러코드. 아니면 null
  • id - 응답하는 요청의 id

*RPC(Remote Procedure Call, 원격 프로시저 호출) :  별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행 할 수 있게하는 프로세스 간 통신 기술이다. 클라이언트 코드언어와 서버 코드의 언어가 다른언어일 수도 있다. 클라이언트에서는 직접 서버 코드의 함수를 호출하는 것처럼 보인다. 

 

REST(Representational State Trasfer)

자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든것을 의미한다. 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 말한다. HTTP URI를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다. 

특징 

HTTP(s) 프로토콜 위에서 동작하는 표준이다.

다른 리소스를 얻기 위해서 다른 URL에 접근해야한다.

REST는 요청을 보낼 때 여러 HTTP Method를 통해서 보낸다. 

REST 방식은 어떤 객체에 대해서 CRUD 작업을 하는 것에 설계 되었다. 

 

REST API(Application Programming Interface)

REST 기반으로 서비스 API를 구현한 것

 

장점

HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API사용을 위한 별도의 인프라를 구축할 필요가 없다.

HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.

서버와 클라이언트의 역할을 명확하게 분리한다.

 

단점

표준이 존재하지 않는다.

사용할 수 있는 메소드가 4가지밖에 없다. -> HTTP Method형태가 제한적이다.

 

REST 구성요소

  • 자원(Resource) : URI
    • 모든 자원에 고유한 ID(HTTP URI)가 존재하고, 이 자원은 Server에 존재한다.
    • 클라이언트는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 서버에 요청한다.
  • 행위(Verb) : HTTP Method
    • HTTP 프로토콜의 Method(GET, POST, PUT, DELETE)를 사용한다.
  • 표현(Representation of Resource)
    • 클라이언트가 자원의 상태(정보)에 대해 조작을 요청하면 서버는 이에 적절한 응답을 보낸다.
    • REST에서 하나의 자원은 JSON, XML, TEXT, RSS등 여러 형태의 Representation으로 나타내어 질 수 있다.

 

 

참고

https://www.getoutsidedoor.com/2019/08/10/%EC%99%9C-json-rpc%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%A0%EA%B9%8C/

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

'Development > 개념, 이론' 카테고리의 다른 글

AES 암호화  (0) 2023.05.25
니모닉 코드와 마스터 시드 관계  (0) 2023.05.10
MultiCall, MultiCall2  (0) 2023.01.03
Polygon (암호화폐)  (0) 2022.11.10
블록체인 관련 개념  (0) 2022.11.02