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-ArtPOST 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)
PayloadEin 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

BestandteilErklärungIm Beispiel
json-rpcDefinition der JSON-RPC Version2.0
method GibStringAus
paramsParameter, die der Funktion übergeben werden sollen“Hello World”
idEine eindeutige ID, damit Requests und Responses zugeordnet werden können1

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

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

BestandteilErklärungIm Beispiel
json-rpcDefinition der JSON-RPC Version2.0
resultDer Rückgabewert der entfernten Funktion“Hello World”
errorFalls ein Fehler aufgetreten ist, wir ein Fehlerobjekt zurück gegeben 
idEine eindeutige ID, damit Requests und Responses zugeordnet werden können1

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 😉

Rückmeldungen