Closed3
grpcサーバに対してcurlでリクエストを送信するための対応ログ

そもそもパスがないところから開始。
実行環境は Windows11、WSL上にUbuntuを入れて動かしている。Goはasdf利用してインストールしている。バージョンは1.24.2を使用。
$ which grpcurl
grpcurl not found
go経由でinstallする
go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest
~/.zshrc 使ってるのでそっちにパス通す設定追加
export PATH=$PATH:/home/hoge/.asdf/installs/golang/$(go version | awk '{print $3}' | sed 's/^go//')/bin
コマンドが認識される
$ which grpcurl
/home/hoge/.asdf/installs/golang/1.24.2/bin/grpcurl

早速gprcurlでリクエストするもエラーになる。
$ grpcurl -plaintext localhost:50051 healthcheck.HealthCheckService/GetHeartbeat
Error invoking method "healthcheck.HealthCheckService/GetHeartbeat": failed to query for service descriptor "healthcheck.HealthCheckService": server does not support the reflection API
server does not support the reflection API
gRPC サーバーがクライアントからのサービス定義の問い合わせ(リフレクションAPI)をサポートしていない故のエラー。
サーバ側に grpcreflect
を仕込めば動くようだが、さっと確認したい故このまま無理やり疎通確認することも可能な模様。
-proto
オプションで、proto定義ファイルのパスを指定した状態でgrpcurlでリクエストすると確認できる。
$ ls -l ./proto/healthcheck/healthcheck.proto
-rw-r--r-- 1 hoge hoge 342 Jun 10 22:30 ./proto/healthcheck/healthcheck.proto
$ grpcurl -plaintext -proto ./proto/healthcheck/healthcheck.proto localhost:50051 healthcheck.HealthCheckService/GetHeartbeat
{
"serverTime": "1749571907"
}

grpcreflect
を仕込む場合は google.golang.org/grpc/reflection
を利用すればよい模様。
動作することを確認
grpcurl -plaintext localhost:50051 healthcheck.HealthCheckService/GetHeartbeat
{
"serverTime": "1749572967"
}
このスクラップは3ヶ月前にクローズされました