⛳
Spring boot(kotlin)で起動しているgRPCサーバーからのgoogle.any型のレスポンスがgrpcurlで確認できない
問題
下記のようなAny型のフィールドを持つレスポンスをgrpcurlで受け取ると表示できない。
message Response {
google.protobuf.Any value = 1;
}
//バイナリ表示される
$ grpcurl -plaintext -rpc-header localhost:8080 test.Hello.Hello
{
"value": {
"@type": "",
"@error": " is not recognized; see @value for raw binary message data",
"@value": "CgVIZWxsbw=="
}
}
解決
grpcurlのissuesに似たようなのがあった。
言語によって振る舞いが違いそうだけど(goでサーバー書いたら普通に表示できた)、とりあえずレスポンスで返ってきたデータを型解決出来なくてエラーになってる的な話だと思う。
なのでファイル指定すれば解決できる。
$ grpcurl -import-path ./ -plaintext -proto ./test/hello.proto localhost:8080 test.Hello.Hello
{
"value": {"@type":"type.googleapis.com/test.Response","value":"Hello"}
}
Discussion