Введение

Компьютерный сетевой протокол JSON RPC (JavaScript Object Notation Remote Procedure Call) - это протокол вызова удаленной процедуры (RPC), закодированный в JSON. Он похож на протокол XML RPC, определяя только несколько типов данных и команд. JSON RPC позволяет отправлять уведомления (данные, отправленные на сервер, которые не требуют ответа) и отправлять множественные вызовы на сервер, на которые можно отвечать асинхронно.

История

Версия Описание Дата 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).

Примеры

В этих примерах > обозначает данные, отправленные в службу (запрос), в то время как < обозначает данные, поступающие от службы. Хотя < часто называют ответом в вычислениях клиент-сервер, в зависимости от версии JSON RPC это не обязательно подразумевает ответ на запрос.