<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=JSON-RPC</id>
	<title>JSON-RPC - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=JSON-RPC"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=JSON-RPC&amp;action=history"/>
	<updated>2026-05-15T15:08:22Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=JSON-RPC&amp;diff=2274859&amp;oldid=prev</id>
		<title>imported&gt;Trustable: Einleitung</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=JSON-RPC&amp;diff=2274859&amp;oldid=prev"/>
		<updated>2023-10-05T23:51:58Z</updated>

		<summary type="html">&lt;p&gt;Einleitung&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;JSON-RPC&amp;#039;&amp;#039;&amp;#039; ([[JavaScript Object Notation]] [[Remote Procedure Call]]) ist ein Protokoll zum Aufruf von [[Methode (Programmierung)|Methoden]] in [[Verteiltes System|entfernten Computersystemen]], ähnlich wie [[XML-RPC]] (die Daten werden jedoch in [[JavaScript Object Notation|JSON]] statt in [[Extensible Markup Language|XML]] gesendet).&lt;br /&gt;
Bei der Spezifikation wurde darauf geachtet, dass JSON-RPC möglichst keine unnötige Komplexität enthält und über verschiedene [[Kommunikationsprotokoll]]e genutzt werden kann. Dadurch kann es sehr flexibel eingesetzt werden. Zudem unterstützt das Protokoll&lt;br /&gt;
[[asynchrone Kommunikation]], da alle Anfragen und Antworten eine ID enthalten, was eine einfache Zuordnung von Antworten zu den entsprechenden Anfragen ermöglicht.&lt;br /&gt;
&lt;br /&gt;
JSON-RPC 1.0 erlaubt Anfragen in beide Richtungen ([[Peer-to-Peer]]), die meisten JSON-RPC 1.0 Implementierungen unterstützen jedoch standardmäßig nur eine Richtung ([[Client-Server-Modell]]).&lt;br /&gt;
&lt;br /&gt;
JSON-RPC 2.0 verwendet ein [[Client-Server-Modell]]. Anfragen in beide Richtungen sind möglich, indem auf beiden Seiten ein JSON-RPC-Server verwendet wird.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
=== Anfrage ===&lt;br /&gt;
Ein JSON-RPC-Call besteht aus einem [[JavaScript Object Notation#Datenstruktur und Formatdefinition|JSON-Objekt]], das vom [[Client]] an einen [[Server]] geschickt wird. Mögliche Anfragetypen sind&lt;br /&gt;
* Request (englisch für: „Anfrage“): Der Server soll eine Antwort liefern.&lt;br /&gt;
* Notification (englisch für: „Benachrichtigung“): Einwegkommunikation, vom Server wird keine Antwort erwartet.&lt;br /&gt;
* Batch Request (englisch für: „Stapelanfrage“): Mehrere Anfragen (&amp;#039;&amp;#039;Notifications&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;Requests&amp;#039;&amp;#039;) werden zusammengefasst als JSON-Array gesendet, dessen Elemente dann die einzelnen Request-Objekte sind. (Verfügbar ab Version 2.0)&lt;br /&gt;
&lt;br /&gt;
In der folgenden Tabelle sind die Bestandteile eines Request-Objekts aufgelistet.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bestandteil&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Bemerkung&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;jsonrpc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ein String mit dem Namen der JSON-RPC-Version (&amp;quot;2.0&amp;quot;)&lt;br /&gt;
| Ab Version 2.0&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;method&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ein String mit dem Namen der Funktion, die aufgerufen werden soll.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;params&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ein Array oder Objekt mit den Parametern, die der Funktion übergeben werden sollen.&lt;br /&gt;
| Objekt ab Version 2.0 möglich&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ein eindeutiger Identifikator für die Nachricht. Kann jeden beliebigen [[Datentyp]] haben (i. d. R. Integer).&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Notification zeichnet sich dadurch aus, dass:&lt;br /&gt;
&lt;br /&gt;
* JSON-RPC Version 2.0: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; fehlt&lt;br /&gt;
* JSON-RPC Version 1.0: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; ist&lt;br /&gt;
&lt;br /&gt;
=== Antwort ===&lt;br /&gt;
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 Bestandteile eines Response-Objektes sind in der folgenden Tabelle aufgelistet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bestandteile&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Bemerkung&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;jsonrpc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ein String mit dem Namen der JSON-RPC-Version („2.0“)&lt;br /&gt;
| Ab Version 2.0&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das Rückgabeobjekt der Funktion, falls kein RPC-Fehler auftrat. Andernfalls:&lt;br /&gt;
* Version 2.0: wird dieses Feld weggelassen.&lt;br /&gt;
* Version 1.0: hat dieses Feld den Wert &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das Fehlerobjekt, falls ein RPC-Fehler auftrat. Andernfalls:&lt;br /&gt;
* Version 2.0: wird dieses Feld weggelassen.&lt;br /&gt;
* Version 1.0: hat dieses Feld den Wert &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
| Enthält den gleichen Wert wie &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; des Requests, der diese Response verursacht hat.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Erhält der Server eine Notification, führt er die angegebene Methode aus, sendet jedoch keine Antwort.&lt;br /&gt;
Erhält er einen Batch-Request, führt er die aufgelisteten Methoden aus, und sendet eine Batch-Response (d.&amp;amp;nbsp;h. die Antworten auf alle Requests im Batch-Request in einer Nachricht).&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
In diesen Beispielen steht &amp;lt;code&amp;gt;--&amp;amp;gt;&amp;lt;/code&amp;gt; für eine Nachricht vom Client an der Server, und &amp;lt;code&amp;gt;&amp;amp;lt;--&amp;lt;/code&amp;gt; umgekehrt.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0 ===&lt;br /&gt;
Ein einfaches Beispiel mit einer Anfrage und einer Antwort:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
--&amp;amp;gt; { &amp;quot;jsonrpc&amp;quot;: &amp;quot;2.0&amp;quot;, &amp;quot;method&amp;quot;: &amp;quot;gibAus&amp;quot;, &amp;quot;params&amp;quot;: [&amp;quot;Hallo JSON-RPC&amp;quot;], &amp;quot;id&amp;quot;: 1}&lt;br /&gt;
&amp;amp;lt;-- { &amp;quot;jsonrpc&amp;quot;: &amp;quot;2.0&amp;quot;, &amp;quot;result&amp;quot;: &amp;quot;Hallo JSON-RPC&amp;quot;, &amp;quot;id&amp;quot;: 1}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gleiches Beispiel mit &amp;quot;named parameters&amp;quot;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
--&amp;amp;gt; { &amp;quot;jsonrpc&amp;quot;: &amp;quot;2.0&amp;quot;, &amp;quot;method&amp;quot;: &amp;quot;gibAus&amp;quot;, &amp;quot;params&amp;quot;: {&amp;quot;Nachricht&amp;quot;: &amp;quot;Hallo JSON-RPC&amp;quot;}, &amp;quot;id&amp;quot;: 2}&lt;br /&gt;
&amp;amp;lt;-- { &amp;quot;jsonrpc&amp;quot;: &amp;quot;2.0&amp;quot;, &amp;quot;result&amp;quot;: &amp;quot;Hallo JSON-RPC&amp;quot;, &amp;quot;id&amp;quot;: 2}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Beispiele finden sich am Ende der JSON-RPC 2.0 Spezifikation.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.0 ===&lt;br /&gt;
Ein einfaches Beispiel mit einer Anfrage und einer Antwort&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--&amp;amp;gt; { &amp;quot;method&amp;quot;: &amp;quot;gibAus&amp;quot;, &amp;quot;params&amp;quot;: [&amp;quot;Hallo JSON-RPC&amp;quot;], &amp;quot;id&amp;quot;: 1}&lt;br /&gt;
&amp;amp;lt;-- { &amp;quot;result&amp;quot;: &amp;quot;Hallo JSON-RPC&amp;quot;, &amp;quot;error&amp;quot;: null, &amp;quot;id&amp;quot;: 1}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Beispiel zeigt einen Teil der Kommunikation in einer Chat-Anwendung. Der Chat-Dienst sendet eine &amp;#039;&amp;#039;Notification&amp;#039;&amp;#039; für jede Nachricht, die der Client erhalten soll. Der Client sendet einen &amp;#039;&amp;#039;Request&amp;#039;&amp;#039;, um eine Nachricht zu senden und erwartet eine positive Rückmeldung, um zu wissen, dass die Nachricht veröffentlicht wurde.&amp;lt;ref&amp;gt;{{Webarchiv |url=http://json-rpc.org/wiki/specification |text=specification – JSON-RPC – Trac. |wayback=20080517011921 |archiv-bot=2018-04-16 15:11:42 InternetArchiveBot}} json-rpc.org&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
--&amp;amp;gt; {&amp;quot;method&amp;quot;: &amp;quot;veröffentlicheNachricht&amp;quot;, &amp;quot;params&amp;quot;: [&amp;quot;Hallo an alle!&amp;quot;], &amp;quot;id&amp;quot;: 99}&lt;br /&gt;
&amp;amp;lt;-- {&amp;quot;result&amp;quot;: 1, &amp;quot;error&amp;quot;: null, &amp;quot;id&amp;quot;: 99}&lt;br /&gt;
&amp;amp;lt;-- {&amp;quot;method&amp;quot;: &amp;quot;empfangeNachricht&amp;quot;, &amp;quot;params&amp;quot;: [&amp;quot;Benutzer1&amp;quot;, &amp;quot;Wir unterhielten uns gerade&amp;quot;], &amp;quot;id&amp;quot;: null}&lt;br /&gt;
&amp;amp;lt;-- {&amp;quot;method&amp;quot;: &amp;quot;empfangeNachricht&amp;quot;, &amp;quot;params&amp;quot;: [&amp;quot;Benutzer3&amp;quot;, &amp;quot;Ich muss jetzt los, tschüss&amp;quot;], &amp;quot;id&amp;quot;: null}&lt;br /&gt;
--&amp;amp;gt; {&amp;quot;method&amp;quot;: &amp;quot;veröffentlicheNachricht&amp;quot;, &amp;quot;params&amp;quot;: [&amp;quot;Ich habe eine Frage!&amp;quot;], &amp;quot;id&amp;quot;: 101}&lt;br /&gt;
&amp;amp;lt;-- {&amp;quot;method&amp;quot;: &amp;quot;ändereStatus&amp;quot;, &amp;quot;params&amp;quot;: [&amp;quot;abwesend&amp;quot;,&amp;quot;Benutzer3&amp;quot;], &amp;quot;id&amp;quot;: null}&lt;br /&gt;
&amp;amp;lt;-- {&amp;quot;result&amp;quot;: 1, &amp;quot;error&amp;quot;: null, &amp;quot;id&amp;quot;: 101}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Versionsgeschichte ==&lt;br /&gt;
Die erste Version vom JSON-RPC stammt von 2005. Die Version 2.0 wurde 2010 verabschiedet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Datum&lt;br /&gt;
|-&lt;br /&gt;
| 1.0&lt;br /&gt;
| Original-Version&amp;lt;ref&amp;gt;{{Webarchiv |url=http://json-rpc.org/wiki/specification |text=json-rpc.org |wayback=20080517011921 |archiv-bot=2018-04-16 15:11:42 InternetArchiveBot}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| 2005&lt;br /&gt;
|-&lt;br /&gt;
| Entwurf „1.1 WD“&lt;br /&gt;
| Auf HTTP eingeschränkt, benannte Parameter, spezifische Fehlercodes und introspektive Funktionen hinzugefügt.&lt;br /&gt;
| 07.08.2006&lt;br /&gt;
|-&lt;br /&gt;
| Entwurf „1.1 Alt“&lt;br /&gt;
| Alternativer (vereinfachter) Vorschlag für 1.1 WD.&lt;br /&gt;
| 06.05.2007&lt;br /&gt;
|-&lt;br /&gt;
| Entwurf „1.2“&lt;br /&gt;
| Leicht modifizierte Variante von 1.1 Alt. Eine spätere Version wurde in 2.0 umbenannt.&lt;br /&gt;
| 27.12.2007&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| aktuelle Spezifikation&amp;lt;ref&amp;gt;[http://www.simple-is-better.org/json-rpc/jsonrpc20.html simple-is-better.org]&amp;lt;/ref&amp;gt;&lt;br /&gt;
| 2010&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementierungen ==&lt;br /&gt;
JSON-RPC wurde in verschiedenen Programmiersprachen implementiert, darunter [[JavaScript]], [[C++]], [[C (Programmiersprache)|C]], [[C-Sharp|C#]], [[Java (Programmiersprache)|Java]], [[Python (Programmiersprache)|Python]] und [[PHP]]. Da JSON aus Unicode-Zeichen besteht, kann JSON-RPC jedoch auch in anderen Programmiersprachen relativ einfach implementiert werden.&amp;lt;ref&amp;gt;{{RFC-Internet |RFC=4627 |Titel=application/json }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verbreitung ==&lt;br /&gt;
Wo überall JSON-RPC eingesetzt wird, ist in der Öffentlichkeit selten ein Thema. Google hat am 31. Juli 2019 verkündet, dass ab dem 12. August 2020 für den Zugriff auf die Google-APIs statt JSON-RPC nur noch [[Representational State Transfer|REST]] verwendet werden kann.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Rainald Menge-Sonnentag |url=https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html |titel=Google schickt JSON-RPC-Zugriff in Rente |werk=heise online |datum=2019-08-02 |abruf=2019-08-04}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://jsonrpc.org/ Die offizielle JSON-RPC Website]&lt;br /&gt;
* [http://groups.google.com/group/json-rpc JSON-RPC-Google Group] diskutiert Themen rund um JSON-RPC.&lt;br /&gt;
* [http://www.simple-is-better.org/json-rpc/ JSON-RPC Spezifikationen, Links usw.] simple-is-better.org&lt;br /&gt;
* [http://json-rpc.org/ Die offizielle JSON-RPC 1.0 Website] enthält unter anderem eine Liste der verfügbaren JSON-RPC 1.0 Implementierungen (veraltet).&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:JSON RPC}}&lt;br /&gt;
[[Kategorie:Webservice]]&lt;br /&gt;
[[Kategorie:JSON]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Trustable</name></author>
	</entry>
</feed>