JSON-RPC


JSON-RPC

JSON-RPC (JavaScript Object Notation Remote Procedure Call) ist ein Protokoll zum Aufruf entfernter Methoden in Computersystemen, ähnlich wie XML-RPC (die Daten werden jedoch in JSON statt in XML gesendet).[1] Bei der Spezifikation wurde darauf geachtet, dass JSON-RPC über verschiedene Kommunikationsprotokolle genutzt werden kann. Dadurch kann es sehr flexibel eingesetzt werden. JSON-RPC erlaubt Anfragen in beide Richtungen. Zudem unterstützt das Protokoll asynchrone Kommunikation.

Inhaltsverzeichnis

Funktionsweise

Dieser Abschnitt bezieht sich ausschließlich auf die Version 1.0. Bei späteren Versionen können Request und Response leicht anders aussehen.

Anfrage

Ein JSON-RPC-Call besteht aus einem JSON-Objekt, das vom Client an einen Server geschickt wird. Mögliche Anfragetypen sind

  • Request (engl. Anfrage): Der Server soll eine Antwort liefern.
  • Notification (engl. Benachrichtigung): Einwegkommunikation, vom Server wird keine Antwort erwartet.
  • Batch Request (engl. Stapelanfrage): Mehrere Anfragen (Notifications oder Requests) werden zusammengefasst gesendet. (Verfügbar ab Version 2.0)


In der folgenden Tabelle sind die Eigenschaften eines Request-Objekts aufgelistet.

Eigenschaft Beschreibung
method Ein String mit dem Namen der Funktion die Aufgerufen werden soll.
params Ein Array mit den Parametern die der Funktion übergeben werden sollen.
id Ein eindeutiger Identifikator für die Nachricht. Kann jeden beliebigen Datentyp haben (i. d. R. Integer).

Bei einer Notification ist id immer null.

Antwort

Im Fall eines Requests schickt der Server nach der Ausführung der angeforderten Methode eine Antwort als JSON-Objekt zurück an den Client. Die Eigenschaften eines Response-Objektes, sind in der folgenden Tabelle aufgelistet.

Eigenschaft Beschreibung
result Das Rückgabeobjekt der Funktion, oder null falls ein Fehler auftrat
error Das Fehlerobjekt, null falls kein Fehler auftrat.
id Enthält den gleichen Wert wie id des Requests der diese Response verursacht hat.

Erhält der Server eine Notification, führt er die angegebene Methode aus, sendet jedoch keine Antwort. Erhält er einen Batch-Request, führt er die aufgelisteten Methoden aus, und sendet eine Bach-Response (d.h. die Antworten auf alle Requests im Batch-Request in einer Nachricht).

Beispiele

In diesen Beispielen steht --> für eine Nachricht vom Client an der Server, und <-- umgekehrt.

Version 1.0

Ein einfaches Beispiel mit einer Anfrage und einer Antwort

--> { "method": "gibAus", "params": ["Hallo JSON-RPC"], "id": 1}
<-- { "result": "Hallo JSON-RPC", "error": null, "id": 1}

Dieses Beispiel zeigt einen Teil der Kommunikation in einer Chat-Anwendung. Der Chat-Dienst sendet eine Notification für jede Nachricht, die der Client erhalten soll. Der Client sendet einen Request, um eine Nachricht zu senden und erwartet eine positive Rückmeldung, um zu wissen, dass die Nachricht veröffentlicht wurde.[2]

...
--> {"method": "veröffentlicheNachricht", "params": ["Hallo an alle!"], "id": 99}
<-- {"result": 1, "error": null, "id": 99}
<-- {"method": "empfangeNachricht", "params": ["Benutzer1", "Wir unterhielten uns gerade"], "id": null}
<-- {"method": "empfangeNachricht", "params": ["Benutzer3", "Ich muss jetzt los, tschüss"], "id": null}
--> {"method": "veröffentlicheNachricht", "params": ["Ich habe eine Frage!"], "id": 101}
<-- {"method": "ändereStatus", "params": ["abwesend","Benutzer3"], "id": null}
<-- {"result": 1, "error": null, "id": 101}
...

Versionsgeschichte

Die erste Version vom JSON-RPC stammt von 2005. Diese Version 1.0 ist immer noch die einzige offizielle Spezifikation. Es wird aber zur Zeit an einer Version 2.0 gearbeitet.

Version Beschreibung Datum
1.0 Original version Im Moment die einzige offizielle Spezifikation[3] 2005
1.1 WD Working draft Benannte Parameter, spezifische Fehlercodes und introspektive Funktionen hinzugefügt. 07.08.2006
1.1 Alt Alternativer Vorschlag für 1.1 WD. 06.05.2007
1.2 Vorschlag Eine spätere Version wurde umbenannt in 2.0. 27.12.2007
2.0 Spezifikationsvorschlag 24.05.2009
2.0 Revised aktueller (überarbeiteter) Spezifikationsvorschlag 26.03.2010

Implementierungen

JSON-RPC wurde in verschiedenen Programmiersprachen implementiert, darunter JavaScript, C/C++, C#, Java, Python und PHP[4]. Da JSON aus Unicode-Zeichen besteht, kann JSONRPC jedoch auch in anderen Programmiersprachen relativ einfach verwendet werden.[5]

Siehe auch

Einzelnachweise

  1. http://groups.google.com/group/json-rpc/web/json-rpc-2-0
  2. specification - JSON-RPC - Trac
  3. http://groups.google.com/group/json-rpc/msg/c5633df97dc8f16f
  4. Liste von Implementationen von JSON-RPC
  5. RFC 4627 application/json

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • JSON-RPC — is a remote procedure call protocol encoded in JSON. It is a very simple protocol (and very similar to XML RPC), defining only a handful of data types and commands. In contrast to XML RPC or SOAP, it allows for bidirectional communication between …   Wikipedia

  • JSON — Расширение .json MIME application/json Тип формата Data interchange Расширен из JavaScript Стандарт(ы) RFC 4627 Сайт …   Википедия

  • JSON — infobox file format mime = application/json extension = .json genre = Data interchange standard = RFC 4627JSON (pronEng|ˈdʒeɪsɒn, i.e., Jason ), short for JavaScript Object Notation, is a lightweight computer data interchange format. It is a text …   Wikipedia

  • JSON — Die JavaScript Object Notation, kurz JSON (IPA: /ˈdʒeɪsʌn/), ist ein kompaktes Computer Format in für Mensch und Maschine einfach lesbarer Textform zum Zweck des Datenaustauschs zwischen Anwendungen. Obwohl der Name auf eine alleinige Verwendung… …   Deutsch Wikipedia

  • XML-RPC — is a remote procedure call protocol which uses XML to encode its calls and HTTP as a transport mechanism. Simon St. Laurent, Joe Johnston, Edd Dumbill. (June 2001) Programming Web Services with XML RPC. O Reilly. First Edition. ] OverviewXML RPC… …   Wikipedia

  • List of web service frameworks — A list of web service frameworks: Name Platform Messaging Model(Destination) Specifications Protocols ActionWebService Ruby (on Rails) Client/Server  ? SOAP, XML RPC, WSDL AlchemySOAP C++ Client/Server WS Addressing SOAP …   Wikipedia

  • XBMC — Media Center XBMC Media Center Home Screen Developer(s) …   Wikipedia

  • Comparison of server-side JavaScript solutions — This is a list of Server side JavaScript solutions. Contents 1 Server side JavaScript use 2 See also 3 External links 4 References …   Wikipedia

  • Liste der standardisierten Ports — Die folgende Liste enthält die Zuordnung von Ports zu Protokollen, die von der IANA standardisiert wurden. Eine vollständige Liste kann unter Unixoiden Betriebssystemen in der Datei /etc/services eingesehen werden. Inhaltsverzeichnis 1 Legende 2… …   Deutsch Wikipedia

  • Inter-process communication — For other uses, see IPC. In computing, Inter process communication (IPC) is a set of methods for the exchange of data among multiple threads in one or more processes. Processes may be running on one or more computers connected by a network. IPC… …   Wikipedia