web-dev-qa-db-fra.com

Comment retourner un tableau dans le service Protobuf rpc

J'ai le schéma suivant dans mon .proto fichier:

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

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

Maintenant, je veux ajouter une autre méthode rpc pour retourner plusieurs éléments. Quelque chose comme ça:

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

Y a-t-il une meilleure façon de le faire que de définir un message Articles?

24
Shoham

Option 1 - Utiliser le flux:

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

Option 2 - Définissez un message de réponse qui utilisera un objet répété:

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