GoogleのProtocol Buffersを使用してRPCサービスを記述しようとしています
_service WhoamiService {
rpc WhoAreYou() returns (Whoami) {}
}
message Whoami {
optional bytes request_id = 1;
optional string hostname = 2;
optional string message = 3;
}
_
この定義をコンパイルしようとすると、WhoAreYou()
ピースを指すエラー_Expected type name
_が表示されます。
WhoAreYou()
をWhoAreYou(Whoami)
に置き換えると正常に機能しますが、この場合、メソッドにパラメーターは不要です。これを行う方法はありますか、それとも単にサポートされていませんか?
入力タイプを指定する必要があります。メソッドがパラメータを受け取らないようにするには、次のように空のメッセージタイプを定義します。
message WhoAreYouParams {}
これが必要な理由は、後でオプションのパラメーターを追加する必要がある場合に、既存のコードを壊すことなく追加できるようにするためです。
独自の空のメッセージの代わりにgoogle.protobuf.Empty
を指定できます。例:
rpc WhoAreYou(google.protobuf.Empty) returns (Whoami) {
}
適切なプロトファイルをインポートすることを忘れないでください:
import "google/protobuf/empty.proto";