gRPCベースのGoaサービスを設計および実装した後は、ローカルで実行し、 期待通りに動作することを確認したいでしょう。このチュートリアルでは:
プロジェクトのルート(例:grpcgreeter/
)から、cmd/greeter/
フォルダに
作成したmain.go
を実行します:
go run grpcgreeter/cmd/greeter
すべてが正しく設定されていれば、サービスはポート8090
でリッスンします
(main.go
で指定した通り)。
以下のようなログメッセージが表示されるはずです:
gRPCサービスが:8090でリッスン中
これはサービスがアクティブで、gRPCリクエストを受信する準備ができていることを 示しています。
公式のgRPC CLIツールがインストールされている場合(MacOSではbrew install grpc
)、
以下のように簡単にサービスをテストできます:
grpc_cli call localhost:8090 SayHello "name: 'Alice'"
これはname
フィールドを"Alice"
に設定してSayHello
メソッドにRPCを送信します。
これはサービスがサーバーリフレクションを有効にするように設定されているため機能します。
gRPCurl(MacOSではbrew install grpcurl
)は
gRPCサービスのテストに使用できる別の人気のあるツールです:
grpcurl -plaintext -d '{"name": "Alice"}' localhost:8090 greeter.Greeter/SayHello
生成されたクライアントコードを使用して小さなGoクライアントを作成することもできます。 例えば:
package main
import (
"context"
"fmt"
"log"
gengreeter "grpcgreeter/gen/greeter"
genclient "grpcgreeter/gen/grpc/greeter/client"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
)
func main() {
// サーバーへの接続をセットアップ
conn, err := grpc.Dial("localhost:8090", grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
log.Fatalf("接続に失敗: %v", err)
}
defer conn.Close()
// Goaの生成されたコードを使用してgRPCクライアントを作成
grpcc := genclient.NewClient(conn)
c := gengreeter.NewClient(grpcc.SayHello())
// RPCコールを実行
res, err := c.SayHello(context.Background(), &gengreeter.SayHelloPayload{"Alice"})
if err != nil {
log.Fatalf("SayHelloの呼び出しエラー: %v", err)
}
// レスポンスを出力
fmt.Printf("サーバーレスポンス: %s\n", res.Greeting)
}
このクライアントをコンパイルして実行すると、サービスから返された挨拶が表示されるはずです。
以上です!これでGoaで構築された実行中のgRPCサービスができ、公式のgRPC CLIまたは カスタムGoクライアントを介してテストできます。DSLをさらに探索して、ストリーミング、 認証インターセプター、複数の環境用の自動コード生成などの機能を追加してください。 最小限のボイラープレートで堅牢なGoベースのマイクロサービスアーキテクチャへの道を 歩み始めました!