Maison >développement back-end >Golang >Les outils de bibliothèque standard peuvent-ils créer une connexion HTTP JSON-RPC à partir d'une page Web ?

Les outils de bibliothèque standard peuvent-ils créer une connexion HTTP JSON-RPC à partir d'une page Web ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-28 18:54:10131parcourir

Can Standard Library Tools Create an HTTP JSON-RPC Connection from a Web Page?

Accès HTTP JSONRPC depuis une page Web

Question :

Est-il possible d'établir un Connexion HTTP JSONRPC à un serveur utilisant uniquement la bibliothèque standard outils ?

Introduction :

Les packages net/rpc et net/rpc/jsonrpc fournissent des mécanismes de communication inter-processus. Cet article explore la possibilité de se connecter à un serveur HTTP JSONRPC à l'aide de la bibliothèque standard, sans avoir besoin d'implémentations personnalisées.

Explication détaillée :

Une configuration de serveur HTTP JSONRPC implique la création d'un rpc.Server et l'enregistrement d'un objet de service. Le serveur gère ensuite les requêtes HTTP à l'aide de rpc.DefaultRPCPath et rpc.DefaultDebugPath. Cependant, l'implémentation de la bibliothèque standard s'attend à ce que les clients HTTP lancent une requête CONNECT et écrivent les données JSON RPC directement dans le flux. Cette approche peut ne pas être pratique à partir des navigateurs ou de simples outils de ligne de commande comme CURL.

Solution :

Malgré la limitation apparente, il est possible de créer un HTTP JSONRPC serveur pouvant recevoir des requêtes POST. Ceci peut être réalisé en implémentant un gestionnaire HTTP personnalisé qui adapte la requête/réponse HTTP à un ServerCodec.

Le gestionnaire définit une structure HttpConn qui encapsule le corps de la requête HTTP et l'auteur de la réponse en tant que ReadWriteCloser, qui est requis par le ServerCodec.

Code de test Exemple :

Le code de test fourni montre comment créer un serveur HTTP JSONRPC et lui envoyer une requête POST. Un simple service CakeBaker est défini et enregistré sur le serveur.

Le gestionnaire HTTP sert les requêtes sur /bake-me-a-cake et utilise un Jsonrpc.NewServerCodec pour convertir la requête HTTP en ServerCodec.

Une requête POST est adressée au serveur avec une charge utile JSON contenant l'appel de méthode et les paramètres. Le serveur répond avec une réponse JSON contenant le résultat de la méthode.

Conclusion :

La bibliothèque standard peut être utilisée pour créer un serveur HTTP JSONRPC pouvant recevoir des requêtes POST. En implémentant un gestionnaire HTTP personnalisé, la limitation des requêtes CONNECT directes est contournée, permettant une intégration facile avec les pages Web et les outils de ligne de commande.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn