ProtoBuf поддерживает полиморфизм? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть служба, которая может вернуть результат или значение NULL, поэтому я определяю его как:

syntax = "proto3";

package package;

import "google/protobuf/empty.proto";

service A {
    rpc getById (ASearchRequest) returns (AResponse) {
    }

    rpc getById (ASearchRequest) returns (google.protobuf.Empty) {

    }
}

message AResponse {
    string _id = 1;
    string key = 2;
    string name = 3;
}

message ASearchRequest {
    required string id = 1;
}

Но компилятор не выполнит его, так как обработать тип ответа, допускающий нулевое значение, вProtobuf

1 Ответ

0 голосов
/ 23 октября 2018

Одним из возможных решений может быть определение сообщения AnOptionalResponse, которое содержит один необязательный элемент типа AResponse.Затем верните AnOptionalResponse, которое является либо пустым сообщением, либо сообщением, содержащим необязательный элемент AResponse proto.

Или просто сделайте все поля в AResponse необязательными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...