Echolot
Ligne de commande et CI

echolot grpc

Listez les services et les méthodes d’un serveur gRPC, et appelez-les avec des messages JSON.

echolot grpc décrit des services gRPC et appelle leurs méthodes, avec des messages écrits en JSON. Il découvre les services grâce à la réflexion du serveur, ou à un fichier .proto. Voir requêtes gRPC pour la même chose dans l’app.

Sous-commandeEffet
echolot grpc describeListe les services et les méthodes d’un serveur ou d’un fichier .proto, avec les champs de chaque méthode.
echolot grpc callAppelle une méthode et affiche la réponse en JSON.

Les exemples utilisent le service d’inventaire Alpenglow, specs/inventory.proto dans l’espace de travail Alpenglow. Il tourne sur votre Mac à localhost:50051 ; l’API de démonstration ne peut pas servir du gRPC.

echolot grpc describe

echolot grpc describe [<url>] [--proto <file>] [--header <header> ...] [--insecure] [--timeout <seconds>] [--json]
echolot grpc describe --proto Alpenglow.echolot/specs/inventory.proto
Alpenglow.echolot/specs/inventory.proto: 1 service
alpenglow.inventory.v1.Inventory
  ListWarehouses (unary): alpenglow.inventory.v1.ListWarehousesRequest → alpenglow.inventory.v1.ListWarehousesResponse
  WatchStock (server streaming): alpenglow.inventory.v1.WatchStockRequest → alpenglow.inventory.v1.StockLevel
    skus: repeated string
  Reserve (unary): alpenglow.inventory.v1.ReserveRequest → alpenglow.inventory.v1.Reservation
    sku: string
    quantity: int32
    orderId: string

Donnez un serveur à la place (echolot grpc describe http://localhost:50051) pour interroger son service de réflexion. Chaque méthode indique si elle est unaire, à flux serveur, à flux client ou bidirectionnelle, ses types de requête et de réponse, et les champs de sa requête.

OptionSignification
<url>Le serveur, http://host:port ou https://host:port. Inutile avec --proto.
--proto <file>Un fichier .proto qui décrit le service, avec ses imports à côté. Sans lui, la réflexion du serveur est interrogée.
-H, --header <header>Des métadonnées sous la forme 'Name: value'. Répétable.
-k, --insecureNe pas vérifier le certificat TLS.
--timeout <seconds>Secondes d’attente de l’appel entier. 30 par défaut.
--jsonAfficher la description en JSON.

echolot grpc call

echolot grpc call <url> <method> [--data <json>] [--deadline <ms>] [--compress <algorithm>] [--proto <file>] [--header <header> ...] [--insecure] [--timeout <seconds>]

<method> est package.Service/Method. Le message est du JSON, {} par défaut ; -d - le lit depuis l’entrée standard. Pour une méthode à flux client, donnez un tableau : chaque élément est un message. La réponse s’affiche en JSON sur la sortie standard.

echolot grpc call http://localhost:50051 alpenglow.inventory.v1.Inventory/Reserve \
  -d '{"sku": "TNT-MH-2P", "quantity": 1, "orderId": "ord_7Hk2Lw"}' \
  --proto Alpenglow.echolot/specs/inventory.proto

L’état, le nombre de messages reçus et la durée vont sur la sortie d’erreur. Un état autre que OK se termine avec le code 1.

OptionSignification
-d, --data <json>Le message en JSON ; - le lit depuis l’entrée standard. {} par défaut.
--deadline <ms>L’échéance en millisecondes, envoyée sous la forme grpc-timeout.
--compress <algorithm>Compresser les messages envoyés : gzip ou deflate. Les réponses compressées sont lues dans tous les cas.
--proto <file>Un fichier .proto qui décrit le service, avec ses imports à côté. Sans lui, la réflexion du serveur est interrogée.
-H, --header <header>Des métadonnées sous la forme 'Name: value'. Répétable.
-k, --insecureNe pas vérifier le certificat TLS.
--timeout <seconds>Secondes d’attente de l’appel entier. 30 par défaut.

http:// parle HTTP/2 sans TLS ; https:// utilise TLS. Les types connus (google.protobuf.Timestamp et les autres) sont intégrés : un fichier .proto qui les importe n’a donc besoin de rien à côté.

Codes de sortie

CodeQuand
0describe a trouvé les services ; call s’est terminé avec l’état OK.
1Le serveur n’a pas pu être joint ou décrit, ou l’état de l’appel n’était pas OK.
64Une option erronée.

Sur cette page