Was ist JSON-RPC

Nachdem wir uns nun mit der Struktur von JSON-Objekten auskennen, wollen wir den nächsten Schritt gehen und JSON für die Kommunikation zwischen einem “Server” und einem “Client” nutzen.

Neben simplen JSON-Requests gibt es ein Protokoll, das uns über JSON den Aufruf von Funktionen auf entfernten Computern ermöglicht: JSON-RPC (JavaScript Object Notation Remote Procedure Call).

Wie sieht ein JSON-Request aus?

JSON-Requests können ganz einfach, z.B. über http-requests realisiert werden.

Optimalerweise bieten sich POST- oder GET-Anfragen besonders an, da ihnen ein JSON-Objekt problemlos als Payload mitgegeben werden kann.

Ein Request über http setzt sich also wie folgt zusammen:

HTTP-Request-Art POST oder GET
Header “Content-Type: application/json” (Der Header sorgt dafür, dass der Empfänger weiß, dass es sich beim Payload um ein JSON-Objekt handelt und es entsprechend verarbeitet)
Payload Ein JSON-Objekt

Ein Beispiel auf der Konsole könnte wie folgt aussehen:

curl -X POST http://example.com/some/path -H "Content-Type: application/json" -d '{"version": "1.1",  "method":"progr","id":2,"params":{"call":...} }'

curl ist ein Kommandozeilen-Tool, mit dem URL-Transfers initiiert werden können (bzw. URLs aufgerufen werden können).

Der Parameter -X definiert hierbei, dass die darauf folgende URL als POST Request abgesetzt wird. Darauf folgt die aufzurufende URL und mit dem -H Parameter, dem der Header folgt. Der -d Parameter steht für “data”, hier wird der Payload für den POST-Request definiert. In diesem Fall ein JSON-Objekt.

Was ist JSON-RPC?

JSON-RPC ist ein Protokoll, das den Aufruf von Methoden auf entfernten Computern ermöglicht. Es wird also z.B. von einem Client eine http-Anfrage an einen Server geschickt (mit dem Payload eines JSON-Objekts), der zu dieser spezifischen Anfrage eine Funktion ausführt.

JSON-RPC definiert mehrere mögliche Arten von Anfragen, die wichtigsten sind:

  • Request: Eine Anfrage, auf die der Server eine Antwort liefern soll
  • Eine Notification: Auf diese Anfrage wird keine Antwort vom Server verlangt

Wie JSON-RPC funktioniert: Beispiele!

Anfrage:

{ “jsonrpc”: “2.0”, “method”: “GibStringAus”, “params”: [“Hello World”], “id”: 1}

Ein JSON-RPC-Objekt zu einer Anfrage (Request) muss demnach folgende Bestandteile haben:

Die entfernte Methode, die aufgerufen werden soll

Bestandteil Erklärung Im Beispiel
json-rpc Definition der JSON-RPC Version 2.0
method   GibStringAus
params Parameter, die der Funktion übergeben werden sollen “Hello World”
id Eine eindeutige ID, damit Requests und Responses zugeordnet werden können 1

Antwort:

{ “jsonrpc”: “2.0”, “result”: “Hello World”, “id”: 1}

Ein JSON-RPC-Objekt zu einer Antwort (Response)muss demnach folgende Bestandteile haben:

Bestandteil Erklärung Im Beispiel
json-rpc Definition der JSON-RPC Version 2.0
result Der Rückgabewert der entfernten Funktion “Hello World”
error Falls ein Fehler aufgetreten ist, wir ein Fehlerobjekt zurück gegeben  
id Eine eindeutige ID, damit Requests und Responses zugeordnet werden können 1

Wo kann ich JSON-RPC verwenden?

Es finden sich Implementationen/Libraries für alle gängigen Programmiersprachen. Von JavaScript über C/C++/C#, Java, Python und PHP ist alles vertreten.

Viel Spaß beim Entwickeln 😉

Beginne damit, deinen Suchbegriff oben einzugeben und drücke Enter für die Suche. Drücke ESC, um abzubrechen.

Zurück nach oben