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-commande | Effet |
|---|---|
echolot grpc describe | Liste les services et les méthodes d’un serveur ou d’un fichier .proto, avec les champs de chaque méthode. |
echolot grpc call | Appelle 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.protoAlpenglow.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: stringDonnez 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.
| Option | Signification |
|---|---|
<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, --insecure | Ne pas vérifier le certificat TLS. |
--timeout <seconds> | Secondes d’attente de l’appel entier. 30 par défaut. |
--json | Afficher 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.protoL’é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.
| Option | Signification |
|---|---|
-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, --insecure | Ne 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
| Code | Quand |
|---|---|
0 | describe a trouvé les services ; call s’est terminé avec l’état OK. |
1 | Le serveur n’a pas pu être joint ou décrit, ou l’état de l’appel n’était pas OK. |
64 | Une option erronée. |