Как вернуть простое логическое значение в ProtoBuffer? - PullRequest
0 голосов
/ 26 декабря 2018

в моем proto файле я определяю интерфейс службы:

syntax = "proto3";

package mynamespace;

import "google/protobuf/empty.proto";

service MyService {
    rpc isTokenValid (TokenRequest) returns (TokenResponse) {
    }
}

message TokenRequest {
    string token = 1;
}

message TokenResponse {
    bool valid = 1;
}

Вышеприведенное работает хорошо, однако я думаю, что TokenResponse безобразен.bool valid = 1 является избыточным, в идеале он должен выглядеть следующим образом:

rpc isTokenValid (TokenRequest) returns (BooleanResponse) {
}

Но я так и не понял, как написать файл proto, может ли какой-нибудь эксперт поделиться какой-нибудь лучшей практикой в ​​этом отношении?

Заранее спасибо!

Обновления:

Как вернуть массив напрямую?Например, это мой код:

service MyService {
    rpc arrayResponse (TokenRequest) returns (ArrayResponse) {}
}

message ArrayResponse {
    repeated Data data = 1;
}

message Data {
    string field1 = 1;
    string field2 = 2;
}

Мне кажется, это безобразно, как правильно провести рефакторинг в Google?

Спасибо!

1 Ответ

0 голосов
/ 09 января 2019

Почему бы просто не использовать предопределенное значение BoolValue , как указано в wrappers.proto Google для ответа?

Что-то вроде:

syntax = "proto3";

package mynamespace;

import "google/protobuf/wrappers.proto";

service MyService {
    rpc isTokenValid (TokenRequest) returns (google.protobuf.BoolValue) {
    }
}

message TokenRequest {
    string token = 1;
}
...