0
Help us understand the problem. What are the problem?

posted at

grpcurlを用いてgRPCサービスの動作確認を行う

はじめに

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フィールドを付与した上で関数を呼び出すことができます。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?