web-dev-qa-db-ja.com

Protobufサービスrpcで配列を返す方法

.protoファイルに次のスキーマがあります。

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

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

次に、複数のアイテムを返す別のrpcメソッドを追加します。このようなもの:

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

Itemsメッセージを定義するよりも良い方法はありますか?

24
Shoham

オプション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;
}
40
Shoham