はじめに
gRPCサーバーの開発を進めている際に、gRPCサーバーに対しての動作確認をローカル環境で行いたい場合があると思います。
そこで、動作確認の際に、便利なツールが公開されているので紹介します。
grpcurl
install
今回はMacにて使用するので、以下のコマンドでinstallを行います。
brew install grpcurl
事前準備
gRPCサーバーのmain.go
に以下の処理を追記しておきます。
下記のソースを追加
s := services.NewServer(client)
reflection.Register(s) ⇦追記
log.Printf("server listening at %v", lis.Addr())
if err := s.Serve(lis); err != nil {
log.Fatal(err)
}
上記の設定を追加しておかないと、grpcurlコマンド使用時に以下のようなエラーが返ってきます。
Failed to list services: server does not support the reflection API
使い方
- gRPCサーバーが提供しているservice一覧取得
$ grpcurl -plaintext localhost:50051 list
genproto.CatService
genproto.DogService
genproto.PonyService
- 特定のserviceが保有するrpc関数の一覧取得
$ grpcurl -plaintext localhost:50051 honeycomb.AlarmService list genproto.CatService
genproto.CatService.Create
genproto.CatService.Delete
genproto.CatService.Get
genproto.CatService.List
genproto.CatService.Update
- 特定のserviceが保有する特定のrpc関数を実行する
$ grpcurl -plaintext -d '{"name": "taro" }' localhost:50051 honeycomb.AlarmService/list
{
response: {
}
}
-d
オプションを明示するとrequestフィールドを付与した上で関数を呼び出すことができます。