Zum Inhalt springen

JSON-RPC

aus Wikipedia, der freien Enzyklopädie

JSON-RPC (JavaScript Object Notation Remote Procedure Call) ist ein Protokoll zum Aufruf von Methoden in entfernten Computersystemen, ähnlich wie XML-RPC (die Daten werden jedoch in JSON statt in XML gesendet). Bei der Spezifikation wurde darauf geachtet, dass JSON-RPC möglichst keine unnötige Komplexität enthält und über verschiedene Kommunikationsprotokolle genutzt werden kann. Dadurch kann es sehr flexibel eingesetzt werden. Zudem unterstützt das Protokoll asynchrone Kommunikation, da alle Anfragen und Antworten eine ID enthalten, was eine einfache Zuordnung von Antworten zu den entsprechenden Anfragen ermöglicht.

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).

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.

Funktionsweise

Anfrage

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

  • Request (englisch für: „Anfrage“): Der Server soll eine Antwort liefern.
  • Notification (englisch für: „Benachrichtigung“): Einwegkommunikation, vom Server wird keine Antwort erwartet.
  • Batch Request (englisch für: „Stapelanfrage“): Mehrere Anfragen (Notifications oder Requests) werden zusammengefasst als JSON-Array gesendet, dessen Elemente dann die einzelnen Request-Objekte sind. (Verfügbar ab Version 2.0)

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

Bestandteil Beschreibung Bemerkung
jsonrpc Ein String mit dem Namen der JSON-RPC-Version ("2.0") Ab Version 2.0
method Ein String mit dem Namen der Funktion, die aufgerufen werden soll.
params Ein Array oder Objekt mit den Parametern, die der Funktion übergeben werden sollen. Objekt ab Version 2.0 möglich
id Ein eindeutiger Identifikator für die Nachricht. Kann jeden beliebigen Datentyp haben (i. d. R. Integer).

Eine Notification zeichnet sich dadurch aus, dass:

  • JSON-RPC Version 2.0: id fehlt
  • JSON-RPC Version 1.0: id null ist

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 Bestandteile eines Response-Objektes sind in der folgenden Tabelle aufgelistet.

Bestandteile Beschreibung Bemerkung
jsonrpc Ein String mit dem Namen der JSON-RPC-Version („2.0“) Ab Version 2.0
result Das Rückgabeobjekt der Funktion, falls kein RPC-Fehler auftrat. Andernfalls:
  • Version 2.0: wird dieses Feld weggelassen.
  • Version 1.0: hat dieses Feld den Wert null.
error Das Fehlerobjekt, falls ein RPC-Fehler auftrat. Andernfalls:
  • Version 2.0: wird dieses Feld weggelassen.
  • Version 1.0: hat dieses Feld den Wert null.
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 Batch-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 2.0

Ein einfaches Beispiel mit einer Anfrage und einer Antwort:

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

Gleiches Beispiel mit "named parameters":

--> { "jsonrpc": "2.0", "method": "gibAus", "params": {"Nachricht": "Hallo JSON-RPC"}, "id": 2}
<-- { "jsonrpc": "2.0", "result": "Hallo JSON-RPC", "id": 2}

Weitere Beispiele finden sich am Ende der JSON-RPC 2.0 Spezifikation.

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.<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20080517011921

      | {{#ifeq: 20080517011921 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: specification – JSON-RPC – Trac. | {{#invoke:WLink|getEscapedTitle|specification – JSON-RPC – Trac.}} | {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20080517011921}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: specification – JSON-RPC – Trac. | {{#invoke:WLink|getEscapedTitle|specification – JSON-RPC – Trac.}} | {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2018-04-16 15:11:42 InternetArchiveBot | 2018-04-16 15:11:42 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20080517011921}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: specification – JSON-RPC – Trac. | {{#invoke:WLink|getEscapedTitle|specification – JSON-RPC – Trac.}} | {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2018-04-16 15:11:42 InternetArchiveBot | 2018-04-16 15:11:42 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: specification – JSON-RPC – Trac. | {{#invoke:WLink|getEscapedTitle|specification – JSON-RPC – Trac.}} | {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2018-04-16 15:11:42 InternetArchiveBot | 2018-04-16 15:11:42 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: specification – JSON-RPC – Trac. | {{#invoke:WLink|getEscapedTitle|specification – JSON-RPC – Trac.}} | {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification}} }} (Memento{{#if: {{#if: 2018-04-16 15:11:42 InternetArchiveBot | 2018-04-16 15:11:42 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: specification – JSON-RPC – Trac. | {{#invoke:WLink|getEscapedTitle|specification – JSON-RPC – Trac.}} | {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification}} }}  
                 }}}}}}}}{{#if:2018-04-16 15:11:42 InternetArchiveBot
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20080517011921|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://json-rpc.org/wiki/specification}}
    || {{#if:  || }}
  }}{{#if: specification – JSON-RPC – Trac.
    | {{#if: {{#invoke:WLink|isBracketedLink|specification – JSON-RPC – Trac.}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://json-rpc.org/wiki/specification%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://json-rpc.org/wiki/specification%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }} json-rpc.org</ref>
...
--> {"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. Die Version 2.0 wurde 2010 verabschiedet.

Version Beschreibung Datum
1.0 Original-Version<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20080517011921 * Vorlage:Webarchiv/Wartung/Stern{{#if: json-rpc.org | {{#invoke:WLink|getEscapedTitle|json-rpc.org}} | {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification}} }} (Archivversionen) 20080517011921}} {{#if: }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein! {{#invoke:WLink|getEscapedTitle|json-rpc.org}} | {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification}} }}] {{#ifeq: | [] | [ | ( }}Memento{{#if: {{#if: 2018-04-16 15:11:42 InternetArchiveBot | 2018-04-16 15:11:42 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20080517011921}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
      }}
  }}
{{#if: {{{webciteID}}}}} len|{{{webciteID}}}}} {{#invoke:WLink|getEscapedTitle|json-rpc.org}} | {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification}} }}] {{#ifeq: | [] | [ | ( }}Memento{{#if: {{#if: 2018-04-16 15:11:42 InternetArchiveBot | 2018-04-16 15:11:42 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }} {{#invoke:WLink|getEscapedTitle|json-rpc.org}} | {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification}} }}] {{#ifeq: | [] | [ | ( }}Memento{{#if: {{#if: 2018-04-16 15:11:42 InternetArchiveBot | 2018-04-16 15:11:42 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }} webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if: }}
      }}
{{{webciteID}}}}} {{#if: json-rpc.org | {{#invoke:WLink|getEscapedTitle|json-rpc.org}} | {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification}} }}] (Memento{{#if: {{#if: 2018-04-16 15:11:42 InternetArchiveBot | 2018-04-16 15:11:42 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
  }}
{{#if: Vorlage:Webarchiv/Today {{#if: Vorlage:Webarchiv/Generisch {{#invoke:WLink|getEscapedTitle|json-rpc.org}} | {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification}} }}]
                 }}}}}}}}{{#if:2018-04-16 15:11:42 InternetArchiveBot
Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
all = url= opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original= cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv errNS = 0 template = Vorlage:Webarchiv format = * preview = 1
  }}{{#ifexpr: {{#if:20080517011921|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
{{#if: }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
getdomain|{{{archiv-url}}}}} web.archive.org =
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
webcitation.org =
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
Execute}}|}} {{#if: }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}} }} {{#if: }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
{{#if: {{#if: }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://json-rpc.org/wiki/specification}}
{{#if: }}
  }}{{#if: json-rpc.org
isBracketedLink|json-rpc.org}} {{#if: }}
      }}
{{#if: }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
addlpages= {{#if: }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://json-rpc.org/wiki/specification%7Carchiv}} |-1
{{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://json-rpc.org/wiki/specification%7C4}}%7Chttp}} |-1 {{#switch: {{#invoke:Webarchiv|getdomain|http://json-rpc.org/wiki/specification }} daserste.ndr.de | inarchive.com | webcitation.org = #default = {{#if: }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }}</ref>
2005
Entwurf „1.1 WD“ Auf HTTP eingeschränkt, benannte Parameter, spezifische Fehlercodes und introspektive Funktionen hinzugefügt. 07.08.2006
Entwurf „1.1 Alt“ Alternativer (vereinfachter) Vorschlag für 1.1 WD. 06.05.2007
Entwurf „1.2“ Leicht modifizierte Variante von 1.1 Alt. Eine spätere Version wurde in 2.0 umbenannt. 27.12.2007
2.0 aktuelle Spezifikation<ref>simple-is-better.org</ref> 2010

Implementierungen

JSON-RPC wurde in verschiedenen Programmiersprachen implementiert, darunter JavaScript, C++, C, C#, Java, Python und PHP. Da JSON aus Unicode-Zeichen besteht, kann JSON-RPC jedoch auch in anderen Programmiersprachen relativ einfach implementiert werden.<ref>Vorlage:RFC-Internet</ref>

Verbreitung

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 REST verwendet werden kann.<ref>{{#if:|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:Rainald Menge-Sonnentag|Rainald Menge-Sonnentag: }}{{#if:|{{#if:Google schickt JSON-RPC-Zugriff in Rente|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1={{{archiv-url}}}}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=Google schickt JSON-RPC-Zugriff in Rente}}]{{#if:| ({{{format}}})}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}|{{#if:https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7C}}%7C{{#invoke:Vorlage:Internetquelle%7CTitelFormat%7Ctitel={{#invoke:WLink%7CgetEscapedTitle%7C1=Google schickt JSON-RPC-Zugriff in Rente}}}}|[{{#invoke:URLutil|getNormalized|1=https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1=Google schickt JSON-RPC-Zugriff in Rente}}}}]}}{{#if:| ({{{format}}}{{#if:heise online2019-08-02{{#if: 2019-08-04 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}

          | )
          | {{#if:{{#ifeq:de|de||{{#if:|1}}}}| ; 
              | )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html}}%7C%7C}}}}{{#if:Google schickt JSON-RPC-Zugriff in Rente|{{#if:{{#invoke:WLink|isValidLinktext|1=Google schickt JSON-RPC-Zugriff in Rente|lines=0}}||}}}}{{#if: heise online| In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=heise online}}}}{{#if: | {{{hrsg}}}{{#if: 2019-08-02|,|{{#if: 2019-08-04 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: 2019-08-02| {{#if:{{#invoke:DateTime|format|2019-08-02|noerror=1}}
            |{{#invoke:DateTime|format|2019-08-02|T._Monat JJJJ}}
            |{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum=2019-08-02|class=Zitationswartung}} }}{{#if: |,|{{#if: 2019-08-04 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: |,|{{#if: 2019-08-04 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: {{#invoke:TemplUtl|faculty|}}| {{#if:2019-08-02|{{#if:|archiviert|ehemals}}|{{#if:|Archiviert|Ehemals}}}} {{#if:|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|}}| (nicht mehr online verfügbar)}}{{#if: | am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|{{{archiv-datum}}}{{#if:2274859||(?)}}}}}}{{#if: 2019-08-04|;}}}}{{#if: 2019-08-04| {{#if:2019-08-02{{#invoke:TemplUtl|faculty|}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2019-08-04 |ISO|noerror=1}} }}
       |4=im Jahr
       |7=im
       |10=am
       |#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2019-08-04|class=Zitationswartung}} }} {{#invoke:DateTime|format|2019-08-04|T._Monat JJJJ}}
    | {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:de|de||{{#if:|1}}}}|{{#if:heise online2019-08-02{{#if: 2019-08-04 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
       |  (
       | {{#if: | |  (}}
       }}{{#ifeq:{{#if:de|de|de}}|de||
          {{#invoke:Multilingual|format|{{{sprache}}}|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:de|de|de}}|de||, }}{{{kommentar}}}}})}}{{#if: 2019-08-02{{#if: 2019-08-04 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}|{{#if: |: {{
 #if: 
 | {{
     #ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
     | Vorlage:Str trim
     | {{#invoke:Vorlage:lang|flat}}
     }}
 | {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
     | „Vorlage:Str trim“
     | {{#invoke:Text|quote
         |1={{#if: 
              | {{#invoke:Vorlage:lang|flat}}
              | {{#invoke:Vorlage:lang|flat}} }}
         |2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
         |3=1}} }}

}}{{#if:

   |  (<templatestyles src="Person/styles.css" />{{#if:  | :  }}{{#if:  | , deutsch: „“ }})
   | {{#if: 
       |  ({{#if:  | , deutsch: „“ }})
       | {{#if:  |  (deutsch: „“) }}
 }}

}}{{#if: {{{zitat}}}

   | {{#if: 
       | {{#if: {{{zitat}}}
           | Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
   | Vorlage:": Text= fehlt }}{{#if:  | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
             | Vorlage:": Ungültiger Wert: ref=
             | {{{ref}}} }}

}}|.{{#if:{{#invoke:TemplUtl|faculty|}}|{{#if:||{{#ifeq: | JaKeinHinweis |{{#switch:

   |0|=Vorlage:Toter Link/Core{{#if: https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html
       | {{#if:  | [1] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: 
           | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }}
         }}
       |   (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.)
     }}{{#switch: 
         |no|0|=
         |#default={{#if:  ||  }}
    }}{{#invoke:TemplatePar|check
         |opt      = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
    }}{{#if: https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html
      | {{#if:{{#invoke:URLutil|isWebURL|https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html}}
          || {{#if:  ||  }} 
        }}
      | {{#if: 
           | {{#if:  ||  }}
           | {{#if:  ||  }}
        }}
    }}{{#if: 
       | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
         }}
    }}{{#switch: deadurl
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. )  {{#if: 
            | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }}
         }}Vorlage:Toter Link/Core{{#switch: 
          |no|0|=
          |#default= {{#if:  ||  }}
        }}{{#invoke:TemplatePar|check
         |all      = inline= url=
         |opt      = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
       }}{{#if: https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html
       | {{#if:{{#invoke:URLutil|isWebURL|https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html}}
          || {{#if:  ||  }} 
        }}
    }}{{#if: 
         | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
           }}
    }}{{#switch: deadurl
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}[https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html }}|{{#switch: 
   |0|=Vorlage:Toter Link/Core{{#if: https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html
       | {{#if:  | [2] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: 
           | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}
       |   (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.)
     }}{{#switch: 
         |no|0|=
         |#default={{#if:  ||  }}
    }}{{#invoke:TemplatePar|check
         |opt      = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
    }}{{#if: https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html
      | {{#if:{{#invoke:URLutil|isWebURL|https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html}}
          || {{#if:  ||  }} 
        }}
      | {{#if: 
           | {{#if:  ||  }}
           | {{#if:  ||  }}
        }}
    }}{{#if: 
       | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
         }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. )  {{#if: 
            | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}Vorlage:Toter Link/Core{{#switch: 
          |no|0|=
          |#default= {{#if:  ||  }}
        }}{{#invoke:TemplatePar|check
         |all      = inline= url=
         |opt      = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
       }}{{#if: https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html
       | {{#if:{{#invoke:URLutil|isWebURL|https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html}}
          || {{#if:  ||  }} 
        }}
    }}{{#if: 
         | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
           }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}[https://www.heise.de/developer/meldung/Google-schickt-JSON-RPC-Zugriff-in-Rente-4487087.html }} }}}}}}}}}}{{#if:|
        {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:|Vorlage:Webarchiv/archiv-bot}}

}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref>

Weblinks

Einzelnachweise

<references />