echolot grpc
gRPC 서버의 서비스와 메서드를 나열하고 JSON 메시지로 호출합니다.
echolot grpc는 gRPC 서비스를 설명하고 메서드를 호출하며, 메시지는 JSON으로 씁니다. 서비스는 서버의 리플렉션이나 .proto 파일에서
알아냅니다. 앱에서의 같은 기능은 gRPC 요청을 참조하십시오.
| 하위 명령 | 동작 |
|---|---|
echolot grpc describe | 서버나 .proto 파일의 서비스와 메서드를 각 메서드의 필드와 함께 나열합니다. |
echolot grpc call | 메서드를 호출하고 응답을 JSON으로 출력합니다. |
예제는 Alpenglow 작업 공간의 specs/inventory.proto인 Alpenglow 재고 서비스를 사용합니다. 이 서비스는 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) 서버의 리플렉션 서비스에 묻습니다. 각 메서드에는 단항(unary),
서버 스트리밍, 클라이언트 스트리밍, 양방향 중 무엇인지, 요청과 응답 타입, 요청의 필드가 표시됩니다.
| 옵션 | 의미 |
|---|---|
<url> | 서버, http://host:port 또는 https://host:port. --proto가 있으면 필요하지 않습니다. |
--proto <file> | 서비스를 설명하는 .proto 파일. import하는 파일은 그 옆에 있어야 합니다. 없으면 서버의 리플렉션에 묻습니다. |
-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 파일. import하는 파일은 그 옆에 있어야 합니다. 없으면 서버의 리플렉션에 묻습니다. |
-H, --header <header> | 'Name: value' 형식의 메타데이터. 반복할 수 있습니다. |
-k, --insecure | TLS 인증서 검증을 건너뜁니다. |
--timeout <seconds> | 호출 전체를 기다리는 시간(초). 기본값은 30입니다. |
http://는 TLS 없이 HTTP/2를 사용하고, https://는 TLS를 사용합니다. 잘 알려진 타입(google.protobuf.Timestamp 등)은 내장되어 있으므로
이를 import하는 .proto 파일에는 다른 파일이 필요하지 않습니다.
종료 코드
| 코드 | 조건 |
|---|---|
0 | describe가 서비스를 찾았습니다. call이 OK 상태로 끝났습니다. |
1 | 서버에 연결하거나 설명을 얻을 수 없었거나, 호출의 상태가 OK가 아니었습니다. |
64 | 잘못된 옵션. |