Go言語でgRPCを学ぼう!~GreetManyTimes API~

こんにちは。KOUKIです。

前回はGreetAPIを実装したので、今回はその続きからです。

Go言語記事まとめ

CalcAPI

gRPCの実装は少し特殊なので、復習がてらCalcAPIを作ってみましょう。

まずは、protoファイルを作成してください。

CalcAPIに、2つの引数を与えると何らかの計算結果を返してくれるAPIです。

続いて、generage.shファイルに次のコマンドを追加してください。

次のコマンドを実行します。

「calculator.pb.go」ファイルが、calculatorpbディレクトリ内に生成されたことを確認してください。

続いて、Serverコードを実装します。

実装内容は、GreetAPIとほぼ同じです。

続いて、Clientコードを実装しましょう。

ClientコードもGreetAPIとほぼ同じです。

実行コマンドをMakefileに実装しておきましょう。

Serverコード->Clientコードの順に実行します。

gRPCを使えば、Go言語で簡単にAPIを作れますね。

GreetManyTimes API – protoファイルの定義 –

復習はここまでにして、GreetAPIの続きを実装していきます。

今回は、gRPCの通信規格の一つ、Server Streaming APIを使って、GreetManyTimes APIを作成します。

Server Streaming APIの特徴は、次の通りです。

Server Streaming APIの特徴 ・ Clientからは単一のリクエストを送り、Serverからは複数のレスポンスを返す
・ Serverから大量のデータを送るときに適している
・ チャットなどClientからのリクエストを必要としない実装に適している


Server Streamingを設定するには、protoファイルのServiceのResponseに、kewordとして”stream“を付与するだけでOKです。

では、さっそくprotoファイルに定義してみましょう。

protoファイルの定義を変更したら下記のコマンドを実行してください。

GreetManyTimes API – Serverコードの定義 –

次は、Serverコードを実装します。

Server Streaming APIは、単一のリクエストに対して複数のレスポンスを返す仕様のため、動作確認用に10回レスポンスを返す処理をGreetManyTimes関数に実装します。

GreetManyTimes API – Clientコードの定義 –

続いて、Clientコードの実装を行います。

GreetManyTimes API – 動作確認 –

次のコマンドをServer->Clientの順に実行してください。

問題なく実行できましたね。

次回

次回は、Client Streaming APIについて学んでいきます。

コメントを残す