如何在 Protobuf 服务 rpc 中返回一个数组

我在 .proto文件中有以下模式:

service MyService {
rpc GetItem (ItemQuery) returns (Item) {
}
}


message ItemQuery {
int id = 1;
}
message Item {
int id = 1;
string name = 2;
}

现在我想添加另一个 rpc 方法来返回多个 Items。 就像这样:

rpc GetItems (ItemsQuery) returns (repeated Item) {
}

还有比定义 Items 消息更好的方法吗?

57836 次浏览

选择一-使用流程:

rpc GetItems (ItemsQuery) returns (stream Item) {
}

选项2-设置一个使用重复对象的响应消息:

service MyService {
rpc GetItem (ItemQuery) returns (ItemResponse) {
}
}


message ItemQuery {
int id = 1;
}
message ItemResponse {
repeated Item items = 1;
}
message Item {
int id = 1;
string name = 2;
}