Echolot
Requêtes

gRPC

Appelez des services gRPC décrits par un fichier .proto ou par la réflexion du serveur, avec des messages écrits et affichés en JSON.

Une requête gRPC appelle une méthode d’un service. Vous écrivez le message en JSON ; Echolot l’encode d’après la description du service, l’envoie en HTTP/2 et affiche la réponse en JSON avec l’état de l’appel.

Inventory › Reserve stock : l’onglet Message avec inventory.proto, le service Inventory et la méthode Reserve, unary, le message JSON, et la réponse avec l’état OK et un message

Essayer avec Alpenglow

Les requêtes du dossier Inventory appellent un serveur gRPC sur localhost:50051. Il se trouve dans le dossier examples/servers du dépôt de la documentation (bun run grpc).

Créer une requête gRPC

Choisissez Fichier › Nouvelle requête gRPC, ou Nouvelle requête gRPC dans le menu + à côté de Requêtes dans la barre latérale. L’adresse est celle du serveur, comme http://localhost:50051 ({{grpcURL}} dans Alpenglow), sans chemin.

L’éditeur a ces onglets : Docs, Message, En-têtes, Auth, Variables, Tests, Scripts et Réglages. Les en-têtes sont les métadonnées de l’appel. Les appels gRPC sont toujours en POST : le badge affiche donc gRPC au lieu d’une méthode.

Décrire le service

L’onglet Message commence par l’endroit où les services sont décrits :

  • Un fichier .proto dans le dossier specs/ de l’espace de travail, comme specs/inventory.proto. Ses imports sont lus à côté de lui, et les types connus google.protobuf n’ont besoin d’aucun fichier. Vous ajoutez et modifiez les fichiers .proto sur la page Specs : voir fichiers proto.
  • Réflexion du serveur : Echolot demande au serveur ses services. Le serveur doit proposer le service de réflexion. L’appel de réflexion va à l’adresse de la requête avec ses en-têtes, son authentification et ses variables.

Choisissez Charger pour lire les services. Choisissez ensuite le service et la méthode. À côté de la méthode, Echolot affiche son type : unary, server streaming, client streaming ou bidirectional streaming.

Partir d’un fichier .proto sur la page Specs est plus rapide : son plan liste chaque méthode, chacune avec un bouton qui crée pour elle une requête gRPC avec un exemple de message.

Écrire le message

Le message est du JSON, selon la correspondance JSON de protobuf, avec des {{variables}} :

{
  "sku": "TNT-MH-2P",
  "quantity": 1,
  "order_id": "{{orderId}}"
}

Exemple remplace le message par tous les champs de l’entrée de la méthode, avec une valeur d’exemple, messages imbriqués compris, pour partir d’une base.

Dans la correspondance JSON, les entiers 64 bits sont des chaînes, les bytes sont en Base64, les enums sont leurs noms, les maps sont des objets, et Timestamp, Duration, FieldMask, les wrappers, Struct et Any ont leurs formes JSON habituelles. Une clé que le type du message n’a pas est refusée : une faute de frappe ne passe donc pas inaperçue.

Types d’appel

TypeLe message que vous écrivezLa réponse
UnaireUn objet JSONUn objet JSON
Streaming serveurUn objet JSONUn tableau JSON de tous les messages envoyés par le serveur
Streaming clientUn tableau JSON de messagesUn objet JSON
Streaming bidirectionnelUn tableau JSON de messagesUn tableau JSON de tous les messages envoyés par le serveur

Pour Inventory › Watch stock, un appel en streaming serveur, le message nomme les produits à surveiller et la réponse est la liste des niveaux de stock envoyés par le serveur.

État, métadonnées et trailers

gRPC indique comment un appel s’est passé dans son état, qui arrive dans les trailers après les messages. Le résumé de la réponse l’affiche : OK en vert, ou l’état et son code en rouge, comme NOT_FOUND (5), avec le nombre de messages reçus et leur compression. L’onglet En-têtes de la réponse montre les en-têtes de la réponse.

Pour vérifier l’état dans les tests, ajoutez une vérification État gRPC dans l’onglet Tests : elle est égale à OK par défaut, et accepte des noms (NOT_FOUND) ou des codes (5). Voir scripts et tests.

Compression et échéance

Le badge gRPC devant l’adresse est un menu :

  • Compresser les messages : Aucun, gzip ou deflate. Les réponses compressées sont toujours lues, quel que soit ce réglage.
  • Échéance : Sans échéance, ou 500 ms, 1 s, 5 s ou 30 s. L’échéance est transmise au serveur, et un appel qui la dépasse se termine par DEADLINE_EXCEEDED.

TLS et certificats

Une adresse http:// appelle le serveur en HTTP/2 sans TLS. Une adresse https:// utilise TLS, avec les règles de certificats de l’espace de travail : les certificats d’AC personnalisés et les certificats client fonctionnent donc. Voir réglages de la requête.

Depuis la ligne de commande

echolot grpc describe liste les services et les méthodes d’un serveur, et echolot grpc call effectue un appel et se termine avec le code 1 pour un état autre que OK. Voir echolot grpc.

Sur cette page