假设我有一个像这样的原型文件。我可以定义像这样的服务
rpc SayHello () returns (Response) {} //service has no input
rpc SayHello (Request1,Request2) returns (Response) {}//service has two inputs
// .proto file
syntax = "proto3";
service Greeter{
rpc SayHello (Request) returns (Response) {}
}
message Request{
string request = 1;
}
message Response{
string response = 1;
}
答案 0 :(得分:14)
gRPC服务方法只有一条输入消息和一条输出消息。通常,这些消息仅用作一个方法的输入和输出。这是有目的的,因为它允许稍后(对消息)轻松添加新参数,同时保持向后兼容性。
如果您不想要任何输入或输出参数,可以使用众所周知的原型google.protobuf.Empty。但是,这是不鼓励的,因为它会阻止您将来向方法添加参数。相反,我们鼓励您遵循为请求发送消息的常规做法,但只是没有内容:
service Greeter {
rpc SayHello (SayHelloRequest) returns (SayHelloResponse) {}
}
message SayHelloRequest {} // service has no input
同样,如果您需要两个请求参数,请在请求消息中包含两者:
message SayHelloRequest { // service has two inputs
string request = 1;
string anotherRequestParam = 2;
}