このようなprotoファイルがあるとしましょう。このようなサービスを定義できますか
rpc SayHello () returns (Response) {} //service has no input
rpc SayHello (Request1,Request2) returns (Response) {}//service has two inputs
//.protoファイル
syntax = "proto3";
service Greeter{
rpc SayHello (Request) returns (Response) {}
}
message Request{
string request = 1;
}
message Response{
string response = 1;
}
gRPCサービスメソッドには、1つの入力メッセージと1つの出力メッセージがあります。通常、これらのメッセージはonly oneメソッドへの入力および出力として使用されます。これは、下位互換性を維持しながら、後で(メッセージに)新しいパラメーターを簡単に追加できるようにするためです。
入力または出力パラメーターが必要ない場合は、よく知られているproto google.protobuf.Empty を使用できます。ただし、今後メソッドにパラメーターを追加できなくなるため、これはお勧めできません。代わりに、リクエストに対するメッセージを作成する通常の方法に従うことをお勧めしますが、コンテンツはありません。
service Greeter {
rpc SayHello (SayHelloRequest) returns (SayHelloResponse) {}
}
message SayHelloRequest {} // service has no input
同様に、2つのリクエストパラメータが必要な場合は、リクエストメッセージに両方を含めるだけです。
message SayHelloRequest { // service has two inputs
string request = 1;
string anotherRequestParam = 2;
}