如何在ProtoBuffer中返回简单的布尔值?

时间:2018-12-26 09:37:55

标签: protocol-buffers proto protobuf.js

在我的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 :(得分:3)

为什么不只使用Google BoolValue中指定的预定义wrappers.proto来回应?

类似的东西:

syntax = "proto3";

package mynamespace;

import "google/protobuf/wrappers.proto";

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

message TokenRequest {
    string token = 1;
}