Введение
Компьютерный сетевой протокол JSON RPC (JavaScript Object Notation Remote Procedure Call) - это протокол вызова удаленной процедуры (RPC), закодированный в JSON. Он похож на протокол XML RPC, определяя только несколько типов данных и команд. JSON RPC позволяет отправлять уведомления (данные, отправленные на сервер, которые не требуют ответа) и отправлять множественные вызовы на сервер, на которые можно отвечать асинхронно.
JSON RPC (JavaScript Object Notation Remote Procedure Call) is a remote procedure call (RPC) protocol encoded in JSON. It is similar to the XML RPC protocol, defining only a few data types and commands. JSON RPC allows for notifications (data sent to the server that does not require a response) and for multiple calls to be sent to the server which may be answered asynchronously.
История
Версия Описание Дата 1.0 Оригинальная версия 2005 1.1 WD Рабочий проект. Добавляет названные параметры, добавляет конкретные коды ошибок и добавляет функции самоанализа. 2006 08 07 1.1 Альт Предложение для простого JSON RPC 1.1. Альтернативное предложение к 1.1 WD. 2007 05 06 1.1 Спецификация объекта Спецификация объекта. Альтернативное предложение к 1.1 WD/1.1ALT. 2007 07 30 1.2 Предложение. Позднее пересмотр этого документа был переименован в 2.0. 2007 12 27 2.0 Предложение по спецификации 2009 05 24 2.0 (Пересмотренная) Спецификация 2010 03 26
Использование
JSON RPC работает, отправляя запрос на сервер, реализующий этот протокол. Клиент в этом случае, как правило, является программным обеспечением, которое намерено вызвать один метод удаленной системы. Многочисленные входные параметры могут быть переданы удаленному методу в виде массива или объекта, тогда как сам метод может также возвращать многочисленные выходные данные. (Это зависит от реализованной версии.) Все типы передачи являются одиночными объектами, сериализированными с использованием JSON. Запрос - это вызов к определенному методу, предоставляемому удаленной системой. Он может содержать трех членов: метод A Строка с именем метода, который будет вызван. Названия методов, начинающиеся с "rpc". используются только для внутренних методов RPC. params Объект или массив значений, которые должны быть переданы в качестве параметров определенному методу. Этот элемент может быть пропущен. id Строка или не дробная цифра, используемая для сопоставления ответа с запросом, на который он отвечает. Этот элемент может быть пропущен, если ответ не будет получен. Получатель запроса должен ответить на все полученные запросы действительным ответом. Ответ может содержать членов, упомянутых ниже. Результат Данные, возвращаемые вызванным методом. Если при вызове метода произошла ошибка, этот элемент не должен существовать. error Объект ошибки, если при вызове метода была ошибка, в противном случае этот элемент не должен существовать. Объект должен содержать код члена (целое число) и сообщение (струнку). Необязательный элемент данных может содержать дополнительные серверные данные. Существуют заранее определенные коды ошибок, которые следуют кодам, определенным для XML RPC. id Идентификатор запроса, на который он отвечает. Поскольку существуют ситуации, когда ответ не требуется или даже не желается, были введены уведомления. Уведомление похоже на запрос, за исключением идентификатора, который не нужен, потому что ответ не будет возвращен. В этом случае свойство id должно быть опущено (версия 2.0) или быть нулевым (версия 1.0).
method A String with the name of the method to be invoked. Method names that begin with "rpc." are reserved for rpc internal methods. params An Object or Array of values to be passed as parameters to the defined method. This member may be omitted. id A string or non fractional number used to match the response with the request that it is replying to. This member may be omitted if no response should be returned. The receiver of the request must reply with a valid response to all received requests. A response can contain the members mentioned below. result The data returned by the invoked method. If an error occurred while invoking the method, this member must not exist. error An error object if there was an error invoking the method, otherwise this member must not exist. The object must contain members code (integer) and message (string). An optional data member can contain further server specific data. There are pre defined error codes which follow those defined for XML RPC. id The id of the request it is responding to. Since there are situations where no response is needed or even desired, notifications were introduced. A notification is similar to a request except for the id, which is not needed because no response will be returned. In this case the id property should be omitted (Version 2.0) or be null (Version 1.0).
Примеры
В этих примерах > обозначает данные, отправленные в службу (запрос), в то время как < обозначает данные, поступающие от службы. Хотя < часто называют ответом в вычислениях клиент-сервер, в зависимости от версии JSON RPC это не обязательно подразумевает ответ на запрос.