Echolot
Línea de comandos y CI

echolot grpc

Lista los servicios y métodos de un servidor gRPC y llámalos con mensajes JSON.

echolot grpc describe servicios gRPC y llama a sus métodos, con mensajes escritos en JSON. Conoce los servicios por la reflexión del servidor o por un archivo .proto. Mira solicitudes gRPC para lo mismo en la app.

SubcomandoQué hace
echolot grpc describeLista los servicios y métodos de un servidor o de un archivo .proto, con los campos de cada método.
echolot grpc callLlama a un método e imprime la respuesta como JSON.

Los ejemplos usan el servicio de inventario de Alpenglow, specs/inventory.proto en el espacio de trabajo Alpenglow. Se ejecuta en tu Mac en localhost:50051; la API de demostración no puede servir 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

Indica un servidor en su lugar (echolot grpc describe http://localhost:50051) para preguntar a su servicio de reflexión. Cada método muestra si es unario, de streaming del servidor, de streaming del cliente o bidireccional, sus tipos de solicitud y de respuesta, y los campos de su solicitud.

OpciónSignificado
<url>El servidor, http://host:port o https://host:port. No hace falta con --proto.
--proto <file>Un archivo .proto que describe el servicio, con sus importaciones a su lado. Sin él, se pregunta a la reflexión del servidor.
-H, --header <header>Metadatos como 'Name: value'. Repetible.
-k, --insecureOmite la verificación del certificado TLS.
--timeout <seconds>Segundos de espera de toda la llamada. Predeterminado 30.
--jsonImprime la descripción como JSON.

echolot grpc call

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

<method> es package.Service/Method. El mensaje es JSON, {} de forma predeterminada; -d - lo lee de la entrada estándar. Para un método de streaming del cliente, indica un array: cada elemento es un mensaje. La respuesta se imprime como JSON en la salida estándar.

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

El estado, el número de mensajes recibidos y el tiempo van a la salida de error estándar. Un estado distinto de OK sale con 1.

OpciónSignificado
-d, --data <json>El mensaje como JSON; - lo lee de la entrada estándar. Predeterminado {}.
--deadline <ms>El plazo en milisegundos, enviado como grpc-timeout.
--compress <algorithm>Comprime los mensajes enviados: gzip o deflate. Las respuestas comprimidas se leen en cualquier caso.
--proto <file>Un archivo .proto que describe el servicio, con sus importaciones a su lado. Sin él, se pregunta a la reflexión del servidor.
-H, --header <header>Metadatos como 'Name: value'. Repetible.
-k, --insecureOmite la verificación del certificado TLS.
--timeout <seconds>Segundos de espera de toda la llamada. Predeterminado 30.

http:// habla HTTP/2 sin TLS; https:// usa TLS. Los tipos conocidos (google.protobuf.Timestamp y los demás) están incorporados, así que un archivo .proto que los importa no necesita nada a su lado.

Códigos de salida

CódigoCuándo
0describe encontró los servicios; call terminó con el estado OK.
1No se pudo alcanzar o describir el servidor, o el estado de la llamada no fue OK.
64Una opción incorrecta.

En esta página