Mic*_*son 35 protocol-buffers protorpc
我正在尝试使用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;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译这个定义时,我得到一个Expected type name指向该WhoAreYou()片段的错误.
它工作正常,如果我取代WhoAreYou()用WhoAreYou(Whoami),但在这种情况下,该方法不需要任何参数.是有办法做到这一点还是根本不支持?
Ken*_*rda 57
您必须指定输入类型.如果您不希望该方法采用任何参数,请定义一个空消息类型,如:
message WhoAreYouParams {}
Run Code Online (Sandbox Code Playgroud)
这是必需的原因,如果您以后需要添加可选参数,则可以在不破坏现有代码的情况下执行此操作.
Ale*_*lex 24
您可以指定google.protobuf.Empty而不是自己的空消息.例:
rpc WhoAreYou(google.protobuf.Empty) returns (Whoami) {
}
Run Code Online (Sandbox Code Playgroud)
不要忘记导入适当的proto文件:
import "google/protobuf/empty.proto";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13620 次 |
| 最近记录: |