JSON-RPC

JSON-RPC

JSON-RPCJSON으로 인코딩된 원격 프로시저 호출 프로토콜입니다.XML-RPC 프로토콜과 유사하며, 몇 가지 데이터 유형 및 명령만 정의합니다.JSON-RPC 에서는, 통지(응답이 필요 없는 서버에 송신되는 데이터) 및 비동기적으로 응답할 수 있는 복수의 콜을 서버에 송신할 수 있습니다.

역사

버전 묘사 날짜
1.0 오리지널 버전 2005
1.1 WD 작업용 초안명명된 매개 변수를 추가하고, 특정 오류 코드를 추가하고, 검사 기능을 추가합니다. 2006-08-07
1.1 Alt 단순한 JSON-RPC 1.1에 대한 제안. 1.1 WD에 대한 대체 제안. 2007-05-06
1.1 오브젝트 사양 오브젝트 사양1.1 WD/1.1 대체 제안ALT 2007-07-30
1.2 프로포즈.이 문서의 이후 리비전은 2.0으로 이름이 변경되었습니다. 2007-12-27
2.0 사양서 제안서 2009-05-24
2.0 (개정-) 사양 2010-03-26

사용.

JSON-RPC는 이 프로토콜을 구현하는 서버에 요청을 전송함으로써 작동합니다.이 경우 클라이언트는 일반적으로 리모트시스템의 단일 메서드를 호출하는 소프트웨어입니다.복수의 입력 파라미터를 어레이 또는 오브젝트로 리모트메서드에 전달할 수 있지만 메서드 자체는 복수의 출력 데이터를 반환할 수도 있습니다(이는 구현된 버전에 따라 다릅니다).

모든 전송 유형은 JSON을 사용하여 직렬화된 [1]단일 개체입니다.요청은 리모트시스템에 의해 제공되는 특정 메서드에 대한 호출입니다.다음 3개의 멤버를 포함할 수 있습니다.

  • method- 호출되는 메서드의 이름을 가진 문자열.rpc로 시작하는 메서드 이름은 rpc-internal 메서드용으로 예약되어 있습니다.
  • params- 정의된 메서드에 파라미터로 전달되는 객체 또는 값의 배열.이 멤버는 생략할 수 있습니다.
  • id- 응답과 응답 [2]중인 요청을 일치시키기 위해 사용되는 문자열 또는 비프랙션 번호.응답이 [3]반환되지 않으면 이 멤버를 생략할 수 있습니다.

요청 수신자는 수신된 모든 요청에 대해 유효한 응답으로 응답해야 합니다.응답에는 아래에 언급된 구성원을 포함할 수 있습니다.

  • result- 호출된 메서드에 의해 반환된 데이터.이 요소는 JSON-stat 개체로 포맷됩니다.메서드를 호출하는 동안 오류가 발생한 경우 이 멤버는 [4]존재하지 않아야 합니다.
  • error- 메서드를 호출할 때 오류가 발생한 경우 오류 개체입니다. 그렇지 않은 경우 [5]이 멤버는 존재하지 않아야 합니다.오브젝트에는 멤버코드(정수)와 메시지(문자열)[6]가 포함되어 있어야 합니다.옵션의 데이터 멤버는, 한층 더 서버 고유의 데이터를 포함할 수 있습니다.XML-RPC용으로 정의된 에러 코드 뒤에 미리 정의된 에러 코드가 있습니다.
  • id- 응답 중인 요청의 ID입니다.

응답이 필요 없거나 심지어 원하는 상황이 있기 때문에 알림이 도입되었습니다.통지는 id를 제외하고 요청과 유사하며, 응답은 반환되지 않으므로 필요하지 않습니다.이 경우,id속성을 생략하거나(버전 2.0)null(버전 1.0).

이 예에서는,-->서비스(요구)로 송신된 데이터를 나타냅니다.<--는 서비스로부터의 데이터를 나타냅니다.비록 ~일지라도<--는 클라이언트/서버 컴퓨팅에서는 응답이라고 불리는 경우가 많습니다.JSON-RPC 버전에 따라서는 반드시 요구에 대한 응답을 의미하는 것은 아닙니다.

버전 2.0

요청 및 응답:

--> {"jsonrpc": "2.0", "실패": "실패", "패럴": {"최소": 42, "하이엔드": 23}, "id": 3} <-- {"jsonrpc": "2.0", '결과": 19, "id": 3} 

알림(응답 없음):

--> {"jsonrpc": "2.0", "실패": "갱신", "패럴": [1,2,3,4,5]} 

버전 1.1 (작업용 초안)

요청 및 응답:

--> {"버전": "1.1", "실패": "과일 구매 확인", "패럴": [["애플", "실패", '신발'], 1.123], "id": "194521489"} <-- {"버전": "1.1", '결과": '완료", "에러": 무효, "id": "194521489"} 

버전 1.0

요청 및 응답:

--> {"실패": "실패", "패럴": ["안녕하세요 JSON-RPC"], "id": 1} <-- {'결과": "안녕하세요 JSON-RPC", "에러": 무효, "id": 1} 

「 」를 참조해 주세요.

레퍼런스

  1. ^ "specification - JSON-RPC - Trac". Archived from the original on 2008-05-17. Retrieved 2008-05-14.
  2. ^ "JSON-RPC 2.0 Specification". id: An identifier established by the Client that MUST contain a String, Number, or NULL value if included. If it is not included it is assumed to be a notification. The value SHOULD normally not be Null and Numbers SHOULD NOT contain fractional parts
  3. ^ "JSON-RPC 2.0 Specification". A Notification is a Request object without an "id" member. A Request object that is a Notification signifies the Client's lack of interest in the corresponding Response object, and as such no Response object needs to be returned to the client. The Server MUST NOT reply to a Notification, including those that are within a batch request. Notifications are not confirmable by definition, since they do not have a Response object to be returned. As such, the Client would not be aware of any errors (like e.g. "Invalid params","Internal error").
  4. ^ "JSON-RPC 2.0 Specification". result: This member is REQUIRED on success. This member MUST NOT exist if there was an error invoking the method. The value of this member is determined by the method invoked on the Server.
  5. ^ "JSON-RPC 2.0 Specification". error: This member is REQUIRED on error. This member MUST NOT exist if there was no error triggered during invocation. The value for this member MUST be an Object as defined in section 5.1.
  6. ^ "JSON-RPC 2.0 Specification". Error object: When a rpc call encounters an error, the Response Object MUST contain the error member with a value that is a Object with the following members: (code) - A Number that indicates the error type that occurred. This MUST be an integer. (message) - A String providing a short description of the error. The message SHOULD be limited to a concise single sentence. (data) - A Primitive or Structured value that contains additional information about the error. This may be omitted. The value of this member is defined by the Server (e.g. detailed error information, nested errors etc.).

외부 링크