メインコンテンツまでスキップ

gRPC API

gRPCは、Protocol Buffers(protobuf)というシリアライゼーション形式を使用して、クライアントとサーバー間の効率的な通信を可能にします。クライアントとサーバーの間でストリームや双方向通信をサポートすることができます。また、多言語に対応しており、さまざまなプログラミング言語で使用することができます。

gRPCプロジェクトの作成

Apidogのホームページで「新しいプロジェクト」ボタンをクリックして、gRPCプロジェクトを新規作成することができます。

grpc

Protoのインポート

gRPCは、API中心のテクノロジーなので、開発に移る前に、.protoファイルを通じて、サービス、方法およびメッセージを定義する必要があります。そこで、Apidogを使用して、gRPCの単体テストを行う前に、APIの定義として.protoファイルをインポートする必要があります。

初のインポート

現在、.protoファイルをインポートするには、2つの方式が利用できます。

  • ローカルファイル
  • .protoファイルのURL

grpc

  • .protoファイルは1つのprotoとしてインポートされ、その中のserviceはサービスになり、rpcは方法になります。
  • 当該.protoファイルは他の.protoファイルに依存している場合、手動で依存関係を追加する必要もあります。
  • .protoファイルは他の.protoファイル内のserviceに依存している場合、そのpackage は、選択の .protoファイルの packageと同じな場合、同じな Protoにインポートされます。

再インポート

インポートした.protoファイルが変更された場合、Apidogでそれを再インポートすることができます。Protoを右クリックして、「再インポート」をクリックします。

grpc

実行の方法

.protoファイルを使用して、 gRPCの方法を定義する場合、以下のように4つの方法が利用できます。

  • Unary:一元実行
  • Server Streaming:サーバーのストリーミング
  • Client Streming:クライアントストリーミング
  • Bidirectional Streaming:双方向ストリーミング

一元実行

一元の実行は、HTTPリクエストに似ています。アドレスバーにURLを入力して、「Message」タブでJSONフォーマットでメッセージを入力した後、「実行」ボタンをクリックします。

grpc

ストリーミング方式

ストリーミング方式は、Websocketの接続に似ています。「Message」タブでJSONフォーマットでメッセージを入力して送信できます。サーバーストリーミング、クライアントストリーミング、双方向ストリーミングは、全てストリーミング方式に属しています。

Apidogは、タイムラインを備えており、時間順に実行の状態、送受信のメッセージを表示します。メッセージをクリックすると、メッセージの詳細を見ることができるので非常に便利です。

grpc

高度なオプション

動的値の自動生成

Apidog は、.protoファイルの内容を識別できるので、「自動生成」をクリックして、送信メッセージを自動的に生成できます。また、動的値ボタンをクリックして、動的値を利用することもできます。

grpc

変数の使用

gRPCのメッセージとMetadataで、Apidogの変数を利用できます。

grpc

TLSをオンにする

gRPC APIは、TLSを通じて安全に接続することができます。

Apidogを使用すると、URLの前のプロトコルをクリックして、TLSの状態を快適に切り替えます。

また、URLに「grpcs://」を使用すると、ApidogはTLSをオンにします。それに対して、「grpc://」の場合は、TLSは無効になります。

grpc

サーバーのURLと環境の管理

URLアドレスの右側にある「+」アイコンをクリックして、現在利用中のサーバーURLを環境に追加することができます。

grpc

そして、右上で環境やサーバーのURLを選択し、URLの設定を「デフォルトを継承」にすることで、すべての方法も同じなURLで単体テストを行うようになります。

grpc

ProtoファイルとAPIのパラメータを確認

Protoファイルの内容を確認

Apidogの左側にメニューツリーのProtoをクリックすると、Protoファイルのオリジナル内容を確認できます。

grpc

リクエストとレスポンスのパラメータを確認

gRPCはシーケンス化フォーマットとしてProtoBufを使用しています。これは、メッセージの送受信の際に、各メッセージがProtoBufフォーマットで転送されることを意味しています。ProtoBufは、他のテキストに基づくフォーマット(JSON,XML)とは異なり、バイナリ形式なので、人間がそれを読み書きしたりすることが難しくなります。

そこで、ApidogでgRPC APIを呼び出す際には、すべてのメッセージをJSONフォーマットで作成したり、表示したりしています。

APIの情報ページで、JSONフォーマットで表示されているレスポンスとパラメータの情報を確認できます。

grpc

ProtoBufは、 JSONデータとの間、次のようなマッピング関係が存在しています。

ProtoBuf 3JSONJSONのサンプル
messageobject{"fooBar": v, "g": null, …}
enumstring"FOO_BAR"
map<K,V>object{"k": v, …}
repeated Varray[v, …]
booltrue, falsetrue, false
stringarray"Hello World!"
bytesbase64 string"YWJjMTIzIT8kKiYoKSctPUB+"
int32, fixed32, uint32number1, -10, 0
int64, fixed64, uint64string"1", "-10"
float, doublenumber1.1, -10.0, 0, "NaN", "Infinity"

単体テストの情報を保存

デバッグ(単体テスト)が終わった場合、「保存」ボタンをクリックして、サーバーのURL、メッセージ、Metadataなどの情報を保存して、他のチームメンバーに共有することもできます。