protobuf post 带字符串格式的 rpc 方法

protobuf post rpc method with string formatting

我的 .proto 文件中有这个 rpc:

    message SetFlagRequest {
        string name = 1;
        bool enable = 2;
    }

    rpc SetFeatureFlag(SetFlagRequest) returns (FlagStatus) {
          option (google.api.http) = {
              post: "/v2/flags/{name}/{enable}"
              body: "*"
          };
//...

我想要 post 地址:

"/v2/flags/{name}/enable"(对于 enable = true)而不是 "/v2/flags/{name}/true"

"/v2/flags/{name}/disable"(对于 enable = false)而不是 "/v2/flags/{name}/false"

是否有在 .proto 文件中格式化字符串的方法?

不,标准做法是将它们明确化。

message SetFlagRequest {
    string name = 1;
}

rpc EnableFeatureFlag(SetFlagRequest) returns (FlagStatus) {
      option (google.api.http) = {
          post: "/v2/flags/{name}/enable"
          body: "*"
      };

rpc DisableFeatureFlag(SetFlagRequest) returns (FlagStatus) {
      option (google.api.http) = {
          post: "/v2/flags/{name}/disable"
          body: "*"
      };

然后在你的每个实现中,如果你愿意,你可以调用一个通用方法。