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

时间:2017-04-02 11:26:36

标签: protocol-buffers 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消息更好的方法呢?

1 个答案:

答案 0 :(得分:34)

选项1 - 使用流:

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;
}