HTTP-JSONRPC-Zugriff von der Webseite
Frage:
Ist es möglich, eine einzurichten HTTP-JSONRPC-Verbindung zu einem Server, der nur die Standardbibliothek verwendet Tools?
Einführung:
Die Pakete net/rpc und net/rpc/jsonrpc bieten Mechanismen für die Kommunikation zwischen Prozessen. In diesem Artikel wird die Möglichkeit untersucht, mithilfe der Standardbibliothek eine Verbindung zu einem HTTP-JSONRPC-Server herzustellen, ohne dass benutzerdefinierte Implementierungen erforderlich sind.
Detaillierte Erklärung:
Ein HTTP-JSONRPC-Server-Setup umfasst das Erstellen eines rpc.Servers und das Registrieren eines Dienstobjekts. Der Server verarbeitet dann HTTP-Anfragen mithilfe von rpc.DefaultRPCPath und rpc.DefaultDebugPath. Die Standardbibliotheksimplementierung erwartet jedoch, dass HTTP-Clients eine CONNECT-Anfrage initiieren und JSON-RPC-Daten direkt in den Stream schreiben. Dieser Ansatz ist für Browser oder einfache Befehlszeilentools wie CURL möglicherweise nicht praktikabel.
Lösung:
Trotz der offensichtlichen Einschränkung ist es möglich, einen HTTP-JSONRPC zu erstellen Server, der POST-Anfragen empfangen kann. Dies kann durch die Implementierung eines benutzerdefinierten HTTP-Handlers erreicht werden, der die HTTP-Anfrage/-Antwort an einen ServerCodec anpasst.
Der Handler definiert eine HttpConn-Struktur, die den HTTP-Anfragetext und den Antwortschreiber als ReadWriteCloser umschließt, was von erforderlich ist der ServerCodec.
Testcode Beispiel:
Der bereitgestellte Testcode zeigt, wie man einen HTTP-JSONRPC-Server erstellt und eine POST-Anfrage an ihn stellt. Ein einfacher CakeBaker-Dienst wird definiert und auf dem Server registriert.
Der HTTP-Handler bedient Anfragen unter /bake-me-a-cake und verwendet einen Jsonrpc.NewServerCodec, um die HTTP-Anfrage in einen ServerCodec umzuwandeln.
Eine POST-Anfrage mit einer JSON-Nutzlast, die den Methodenaufruf und die Parameter enthält, wird an den Server gesendet. Der Server antwortet mit einer JSON-Antwort, die die Methodenausgabe enthält.
Fazit:
Mit der Standardbibliothek kann ein HTTP-JSONRPC-Server erstellt werden, der POST-Anfragen empfangen kann. Durch die Implementierung eines benutzerdefinierten HTTP-Handlers wird die Beschränkung direkter CONNECT-Anfragen umgangen, was eine einfache Integration mit Webseiten und Befehlszeilentools ermöglicht.
Das obige ist der detaillierte Inhalt vonKönnen Standardbibliothekstools eine HTTP-JSON-RPC-Verbindung von einer Webseite aus erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!