9

在我的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;
}

我认为这很丑陋,如何以正确的谷歌方式重构?

谢谢!

4

1 回答 1

19

为什么不直接使用Google 的wrappers.proto中指定的预定义BoolValue作为响应?

就像是:

syntax = "proto3";

package mynamespace;

import "google/protobuf/wrappers.proto";

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

message TokenRequest {
    string token = 1;
}
于 2019-01-09T03:05:57.437 回答