首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以定义一个请求或响应为空的grpc调用吗?

我可以定义一个请求或响应为空的grpc调用吗?
EN

Stack Overflow用户
提问于 2015-08-02 12:49:01
回答 3查看 106.2K关注 0票数 174

proto3中的RPC语法允许空请求或响应吗?

例如,我想要以下内容的等价物:

代码语言:javascript
复制
rpc Logout;
rpc Status returns (Status);
rpc Log (LogData);

或者我应该只创建一个null类型?

代码语言:javascript
复制
message Null {};

rpc Logout (Null) returns (Null);
rpc Status (Null) returns (Status);
rpc Log (LogData) returns (Null);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-02 22:39:12

Kenton下面的评论是合理的建议:

...作为开发人员,我们真的不擅长猜测我们未来可能想要什么。因此,我建议安全起见,总是为每个方法定义自定义参数和结果类型,即使它们是空的。

回答我自己的问题:

查看默认的proto文件时,我发现Empty与我上面建议的Null类型完全相同:)

摘录自该文件:

代码语言:javascript
复制
// A generic empty message that you can re-use to avoid defining duplicated
// empty messages in your APIs. A typical example is to use it as the request
// or the response type of an API method. For instance:
//
//     service Foo {
//       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
//     }
//

message Empty {

}
票数 235
EN

Stack Overflow用户

发布于 2019-10-22 20:45:35

您还可以使用预定义的:

代码语言:javascript
复制
import "google/protobuf/empty.proto";
package MyPackage;

service MyService {
  rpc Check(google.protobuf.Empty) returns (google.protobuf.Empty) {}
}
票数 82
EN

Stack Overflow用户

发布于 2019-10-08 15:36:11

您还可以在回复结构中使用另一个bool属性。像这样

代码语言:javascript
复制
message Reply {
  string result = 1;
  bool found = 2;
}

因此,如果您找不到结果或发生了某些错误,您可以从服务类中返回以下内容

代码语言:javascript
复制
return new Reply()
{
   Found = false
};
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31768665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档