【ジーアールピーシーカール】

grpcurl とは?

💡 gRPCの世界にcurlの手軽さを持ち込むツール
📌 このページのポイント
grpcurl — gRPC のコマンドラインクライアント grpcurl CLIクライアント gRPC Request Protocol Buffers gRPC Server リフレクション対応 or .proto指定 JSON Response 主な使い方 サービス一覧 grpcurl localhost:50051 list メソッド詳細 grpcurl localhost:50051 describe Svc リクエスト grpcurl -d '{"id":1}' host:50051 Svc/Get .proto 定義 スキーマから 型を自動認識 curl のように gRPC サービスをコマンドラインでテスト
grpcurl のリクエストフローのイメージ
ひよこ ひよこ

gRPCAPIをテストしたいけど、curlだとバイナリプロトコルだから使えないんだよね…

ペンギン先生 ペンギン先生

grpcurlを使えばcurlみたいな手軽さでgRPCサーバーにリクエストを送れるよ。JSONでリクエストを書いて、レスポンスもJSONで返ってくるんだ

ひよこ ひよこ

.protoファイルが必要なの?

ペンギン先生 ペンギン先生

サーバーがリフレクションを有効にしてれば.protoファイルなしでもOKだよ。`grpcurl localhost:50051 list`でサービス一覧、`describe`でメソッドの詳細が見えるんだ

ひよこ ひよこ

実際のリクエストはどう書くの?

ペンギン先生 ペンギン先生

`grpcurl -d '{"name": "world"}' localhost:50051 greeter.Greeter/SayHello`みたいに書くよ。-dオプションでJSONのリクエストボディを指定するんだ

ひよこ ひよこ

ストリーミングRPCもテストできる?

ペンギン先生 ペンギン先生

サーバーストリーミングもクライアントストリーミングも対応してるよ。双方向ストリーミングのテストもできるから、gRPCの全機能をコマンドラインから試せるんだ

ひよこ ひよこ

CIでの自動テストにも使える?

ペンギン先生 ペンギン先生

もちろん。gRPCサーバーヘルスチェックや簡易的なE2Eテストシェルスクリプトで書けるよ。jqと組み合わせてレスポンスの検証もできるから、CI/CDパイプラインにも組み込みやすいんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「grpcurl」って出てきたら「gRPC版のcurl、コマンドラインgRPCを叩けるツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「gRPC + curl」 = gRPC版のcurl
💬 curlがHTTPリクエストを送るツールなら、grpcurlはgRPCリクエストを送るツール。名前もそのままだよ
← 用語集にもどる