Как вернуть массив в службе 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) {
}
Есть ли лучший способ сделать это, чем определить сообщение "Элементы"?
Ответы
Ответ 1
Вариант 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;
}