命令行与 CI
echolot grpc
列出 gRPC 服务器的服务和方法,并用 JSON 消息调用它们。
echolot grpc 描述 gRPC 服务并调用它们的方法,消息以 JSON 书写。它从服务器的反射或 .proto 文件了解这些服务。App 中的对应功能参见 gRPC 请求。
| 子命令 | 作用 |
|---|---|
echolot grpc describe | 列出服务器或 .proto 文件的服务和方法,并给出每个方法的字段。 |
echolot grpc call | 调用一个方法,并将应答打印为 JSON。 |
示例使用 Alpenglow 的库存服务,即 Alpenglow 工作区中的 specs/inventory.proto。它运行在你 Mac 上的 localhost:50051;演示 API 无法提供 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: string改为给出服务器(echolot grpc describe http://localhost:50051),就会询问它的反射服务。每个方法都会显示它是一元、服务器流、客户端流还是双向流,它的请求和响应类型,以及请求的字段。
| 选项 | 含义 |
|---|---|
<url> | 服务器,http://host:port 或 https://host:port。使用 --proto 时不需要。 |
--proto <file> | 描述该服务的 .proto 文件,其导入的文件放在它旁边。不带它时,会询问服务器的反射。 |
-H、--header <header> | 以 'Name: value' 形式给出的元数据。可重复。 |
-k、--insecure | 跳过 TLS 证书验证。 |
--timeout <seconds> | 等待整个调用的秒数。默认 30。 |
--json | 将描述打印为 JSON。 |
echolot grpc call
echolot grpc call <url> <method> [--data <json>] [--deadline <ms>] [--compress <algorithm>] [--proto <file>] [--header <header> ...] [--insecure] [--timeout <seconds>]<method> 是 package.Service/Method。消息是 JSON,默认为 {};-d - 从标准输入读取。对于客户端流方法,请给出一个数组:每个元素是一条消息。应答以 JSON 输出到标准输出。
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状态、收到的消息数和耗时输出到标准错误。状态不是 OK 时以 1 退出。
| 选项 | 含义 |
|---|---|
-d、--data <json> | JSON 消息;- 表示从标准输入读取。默认 {}。 |
--deadline <ms> | 截止时间,单位毫秒,以 grpc-timeout 发送。 |
--compress <algorithm> | 压缩发送的消息:gzip 或 deflate。无论如何都能读取压缩的应答。 |
--proto <file> | 描述该服务的 .proto 文件,其导入的文件放在它旁边。不带它时,会询问服务器的反射。 |
-H、--header <header> | 以 'Name: value' 形式给出的元数据。可重复。 |
-k、--insecure | 跳过 TLS 证书验证。 |
--timeout <seconds> | 等待整个调用的秒数。默认 30。 |
http:// 使用不带 TLS 的 HTTP/2;https:// 使用 TLS。常见类型(google.protobuf.Timestamp 等)已内置,所以导入它们的 .proto 文件无需在旁边放置任何内容。
退出码
| 退出码 | 何时 |
|---|---|
0 | describe 找到了服务;call 以状态 OK 结束。 |
1 | 无法连接或描述服务器,或调用的状态不是 OK。 |
64 | 选项有误。 |