JSON- RPC - это удаленный вызов процедуры протокол, закодированный в JSON. Он похож на протокол XML-RPC, определяя только несколько типов данных и команд. JSON-RPC позволяет отправлять уведомления (данные, отправляемые на сервер, не требующие ответа), а также отправлять несколько вызовов на сервер, на которые можно отвечать асинхронно.
Версия | Описание | Дата |
---|---|---|
1.0 | Исходная версия | 2005 |
1.1 WD | Рабочий проект. Добавляет именованные параметры, добавляет определенные коды ошибок и добавляет функции самоанализа. | 07.08.2006 |
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 (пересмотренное-) | Спецификация | 26.03.2010 |
JSON-RPC работает, отправляя запрос на сервер, реализующий этот протокол. В этом случае клиентом обычно является программное обеспечение, намеревающееся вызвать единственный метод удаленной системы. Несколько входных параметров могут быть переданы удаленному методу в виде массива или объекта, тогда как сам метод может также возвращать несколько выходных данных. (Это зависит от реализованной версии.)
Все типы передачи представляют собой отдельные объекты, сериализованные с использованием JSON. Запрос - это вызов определенного метода, предоставляемого удаленной системой. Он должен содержать три определенных свойства:
method
- строка с именем вызываемого метода.params
- объект или массив значений, передаваемых в качестве параметров определенному методу..id
- значение любого типа, используемое для сопоставления ответа с запросом, на который он отвечает.Получатель запроса должен ответить действительным ответом на все полученные запросы. Ответ должен содержать свойства, указанные ниже.
результат
- данные, возвращаемые вызванным методом. Этот элемент отформатирован как объект JSON-stat. Если при вызове метода произошла ошибка, это значение должно быть пустым.error
- Указанный код ошибки, если при вызове метода произошла ошибка, в противном случае - null.id
- Идентификатор запроса. ответ на.Поскольку бывают ситуации, когда ответ не требуется или даже не желателен, были введены уведомления. Уведомление похоже на запрос, за исключением идентификатора, который не нужен, потому что ответ не будет возвращен. В этом случае свойство id
следует опустить (версия 2.0) или иметь значение null
(версия 1.0).
В этих примерах -->
обозначает данные, отправленные службе (запрос), а <--
обозначает данные, поступающие от службы. Хотя <--
часто называют ответом в вычислениях клиент-сервер, в зависимости от версии JSON-RPC он не обязательно подразумевает ответ на запрос.
Запрос и ответ:
->{"jsonrpc": "2.0", "method": "subtract", "params": {"minuend": 42, "subtrahend": 23}, "id": 3} <-- {"jsonrpc": "2.0", "result": 19, "id": 3}
Уведомление (нет ответа):
->{"jsonrpc": "2.0", "method": "update", "params" : [1,2,3,4,5]}
Запрос и ответ:
->{"версия": "1.1", "метод" : "confirmFruitPurchase", "params": [["яблоко", "апельсин", "манго"], 1.123], "id": "194521489"} <-- {"version": "1.1", "result": "done", "error": null, "id": "194521489"}
Запрос и ответ:
->{"method": "echo", "params": ["Hello JSON-RPC"], "id": 1} <-- {"result": "Hello JSON-RPC", "error": null, "id": 1}