gRPC
.protoファイルまたはサーバのリフレクションで記述されたgRPCサービスを呼び出し、メッセージをJSONで書き、JSONで表示します。
gRPCリクエストは、サービスの1つのメソッドを呼び出します。メッセージをJSONで書くと、Echolotはサービスの記述に従ってエンコードし、HTTP/2で送信して、 呼び出しのステータスとともに、答えをJSONで表示します。

Alpenglowで試す
Inventoryフォルダのリクエストは、localhost:50051のgRPCサーバを呼び出します。サーバは、ドキュメントリポジトリのexamples/serversフォルダにあります(bun run grpc)。
gRPCリクエストを作成する
ファイル › 新規gRPCリクエストを選ぶか、サイドバーのリクエストの横にある+メニューから新規gRPCリクエストを選びます。
アドレスはサーバで、パスなしのhttp://localhost:50051のような形です(Alpenglowでは{{grpcURL}})。
エディタのタブは次のとおりです:ドキュメント、メッセージ、ヘッダー、認証、変数、テスト、スクリプト、設定。 ヘッダーは呼び出しのメタデータです。gRPCの呼び出しは常にPOSTなので、バッジにはメソッドの代わりにgRPCと表示されます。
サービスを記述する
メッセージタブは、サービスの記述元を指定するところから始まります:
- ワークスペースの
specs/フォルダにある.protoファイル(specs/inventory.protoなど)。importはファイルの隣から読み込まれ、よく使われるgoogle.protobufの型にはファイルは不要です。.protoファイルの追加と編集は仕様ページで行います。protoファイルを参照してください。 - サーバリフレクション:Echolotがサーバにサービスを問い合わせます。サーバがリフレクションサービスを提供している必要があります。 リフレクションの呼び出しは、リクエストのアドレスに、そのヘッダー、認証、変数とともに送られます。
読み込むを選ぶと、サービスが読み込まれます。続いて、サービスとメソッドを選びます。メソッドの横に、Echolotがその種類を表示します: unary、server streaming、client streaming、bidirectional streaming。
仕様ページの.protoファイルから始めるほうが早く済みます。アウトラインにすべてのメソッドが並び、各メソッドのボタンで、例のメッセージ付きのgRPCリクエストを作れます。
メッセージを書く
メッセージはprotobufのJSONマッピングによるJSONで、{{variables}}が使えます:
{
"sku": "TNT-MH-2P",
"quantity": 1,
"order_id": "{{orderId}}"
}例は、メッセージを、メソッドの入力のすべてのフィールドを例の値で埋めたもの(入れ子のメッセージも含む)に置き換えます。そこから書き始められます。
JSONマッピングでは、64ビット整数は文字列、bytesはBase64、enumは名前、mapはオブジェクトになり、Timestamp、Duration、FieldMask、ラッパー、Struct、Anyには通常のJSON形式があります。
メッセージ型にないキーは拒否されるので、タイプミスが見過ごされることはありません。
呼び出しの種類
| 種類 | 書くメッセージ | レスポンス |
|---|---|---|
| Unary | JSONオブジェクト1つ | JSONオブジェクト1つ |
| Server streaming | JSONオブジェクト1つ | サーバが送信したすべてのメッセージのJSON配列 |
| Client streaming | メッセージのJSON配列 | JSONオブジェクト1つ |
| Bidirectional streaming | メッセージのJSON配列 | サーバが送信したすべてのメッセージのJSON配列 |
サーバストリーミングの呼び出しであるInventory › Watch stockでは、メッセージが監視する商品を指定し、レスポンスはサーバが送信した在庫レベルのリストになります。
ステータス、メタデータ、トレーラー
gRPCは、呼び出しの結果をステータスで報告します。ステータスは、メッセージの後のトレーラーに入って届きます。レスポンスの概要に表示され、OKは緑、
それ以外はステータスとコードが赤で表示されます(NOT_FOUND (5)など)。受信したメッセージ数と圧縮方式も表示されます。レスポンスのヘッダータブには、レスポンスヘッダーが表示されます。
テストでステータスを確認するには、テストタブにgRPCステータスのチェックを追加します。デフォルトはOKと等しく、名前(NOT_FOUND)またはコード(5)も指定できます。
スクリプトとテストを参照してください。
圧縮と期限
アドレスの前にあるgRPCバッジはメニューになっています:
- メッセージを圧縮:なし、gzip、deflate。圧縮された返信は、この設定にかかわらず常に読み取られます。
- 期限:期限なし、または500 ms、1 s、5 s、30 s。期限はサーバに送られ、それを過ぎた呼び出しは
DEADLINE_EXCEEDEDで終了します。
TLSと証明書
http://のアドレスは、TLSなしのHTTP/2でサーバを呼び出します。https://のアドレスはTLSを使い、ワークスペースの証明書ルールが適用されるので、カスタムCA証明書やクライアント証明書も使えます。
リクエスト設定を参照してください。
コマンドラインから
echolot grpc describeは、サーバのサービスとメソッドを一覧します。echolot grpc callは呼び出しを行い、OK以外のステータスでは1で終了します。echolot grpcを参照してください。
