在 gRPC 转码中允许重复字段
Allow repeated field in gRPC Transcoding
我在 Google 云端点中使用 gRPC
我在 endpoint python
中使用快速示例
我为 SayHelloRepeated
添加了一项功能,但不知道如何转码重复字段。
helloworld.proto
service Greeter {
...
rpc SayHelloRepeated (RepeatedHello) returns (HelloReply) {}
...
}
message RepeatedHello {
repeated HelloRequest hello_request = 1;
}
message HelloRequest {
string name = 1;
}
api_config_http.yaml
http:
rules:
...
- selector: helloworld.Greeter.SayHelloRepeated
get: /v1/rsayhello/{hello_request}
...
当我尝试部署 api_config_http.yaml
时出现错误 Repeated field not allowed
ERROR: (gcloud.endpoints.services.deploy) INVALID_ARGUMENT: Cannot convert to service config.
kind: ERROR
message: "http: repeated field not allowed: reached via \'hello_request\' on message \'helloworld.RepeatedHello\'."
更新
如果 HelloRequest
有多个字段,而不仅仅是一个 name
字段,那么该怎么办。
message HelloRequest {
string name = 1;
string message = 2;
}
根据官方文档Package google.api:
Each mapping specifies a URL path template and an HTTP method. The path template may refer to one or more fields in the gRPC request message, as long as each field is a non-repeated field with a primitive (non-message) type.
这意味着您不能在 gRPC 中使用重复字段。因此,您不能使用这种确切的格式来使用重复的字段。
我建议您查看文档的这一部分 - gRPC Transcoding - 以获取有关如何执行解决方法以实现重复字段使用的更多信息。
如果这些信息对您有帮助,请告诉我!
我在 Google 云端点中使用 gRPC
我在 endpoint python
中使用快速示例
我为 SayHelloRepeated
添加了一项功能,但不知道如何转码重复字段。
helloworld.proto
service Greeter {
...
rpc SayHelloRepeated (RepeatedHello) returns (HelloReply) {}
...
}
message RepeatedHello {
repeated HelloRequest hello_request = 1;
}
message HelloRequest {
string name = 1;
}
api_config_http.yaml
http:
rules:
...
- selector: helloworld.Greeter.SayHelloRepeated
get: /v1/rsayhello/{hello_request}
...
当我尝试部署 api_config_http.yaml
时出现错误 Repeated field not allowed
ERROR: (gcloud.endpoints.services.deploy) INVALID_ARGUMENT: Cannot convert to service config.
kind: ERROR message: "http: repeated field not allowed: reached via \'hello_request\' on message \'helloworld.RepeatedHello\'."
更新
如果 HelloRequest
有多个字段,而不仅仅是一个 name
字段,那么该怎么办。
message HelloRequest {
string name = 1;
string message = 2;
}
根据官方文档Package google.api:
Each mapping specifies a URL path template and an HTTP method. The path template may refer to one or more fields in the gRPC request message, as long as each field is a non-repeated field with a primitive (non-message) type.
这意味着您不能在 gRPC 中使用重复字段。因此,您不能使用这种确切的格式来使用重复的字段。
我建议您查看文档的这一部分 - gRPC Transcoding - 以获取有关如何执行解决方法以实现重复字段使用的更多信息。
如果这些信息对您有帮助,请告诉我!