我有一个可以返回结果或为null的服务,因此我将其定义为:
syntax = "proto3";
package package;
import "google/protobuf/empty.proto";
service A {
rpc getById (ASearchRequest) returns (AResponse) {
}
rpc getById (ASearchRequest) returns (google.protobuf.Empty) {
}
}
message AResponse {
string _id = 1;
string key = 2;
string name = 3;
}
message ASearchRequest {
required string id = 1;
}
但是编译器不会执行它,那么如何在ProtoBuf中处理可为空的响应类型?
答案 0 :(得分:1)
一个可能的解决方案可能是定义一条消息AnOptionalResponse
,其中包含一个类型为AResponse
的单个可选成员。然后,返回AnOptionalResponse
,它可以是空消息,也可以是包含可选AResponse
原型成员的消息。
或者只是将AResponse
中的所有字段设为可选。