Echolot
リクエスト

gRPC

.protoファイルまたはサーバのリフレクションで記述されたgRPCサービスを呼び出し、メッセージをJSONで書き、JSONで表示します。

gRPCリクエストは、サービスの1つのメソッドを呼び出します。メッセージをJSONで書くと、Echolotはサービスの記述に従ってエンコードし、HTTP/2で送信して、 呼び出しのステータスとともに、答えをJSONで表示します。

Inventory › Reserve stock:inventory.proto、Inventoryサービス、Reserveメソッド(unary)、JSONメッセージを表示したメッセージタブと、ステータスOK・メッセージ1件のレスポンス

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形式があります。 メッセージ型にないキーは拒否されるので、タイプミスが見過ごされることはありません。

呼び出しの種類

種類書くメッセージレスポンス
UnaryJSONオブジェクト1つJSONオブジェクト1つ
Server streamingJSONオブジェクト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を参照してください。

このページの内容