3

gRPC谷歌云端点中使用我正在使用端点 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它时给我错误不允许重复字段

错误:(gcloud.endpoints.services.deploy)INVALID_ARGUMENT:无法转换为服务配置。

种类:错误消息:“http:不允许重复字段:通过消息 \'helloworld.RepeatedHello\' 上的 \'hello_request\' 到达。”

更新

如果HelloRequest有多个字段而不仅仅是一个name字段,那么该怎么办。

message HelloRequest {
string name = 1;
string message = 2;
}
4

1 回答 1

1

根据官方文档包 google.api

每个映射指定一个 URL 路径模板和一个 HTTP 方法。路径模板可以引用 gRPC 请求消息中的一个或多个字段,只要每个字段是原始(非消息)类型的非重复字段即可。

这意味着您不能在 gRPC 中使用重复字段。因此,您不能使用这种精确的格式来使用重复的字段。

我建议您查看文档的这一部分 - gRPC 转码- 以获取有关如何执行解决方法以实现重复字段使用的更多信息。

让我知道这些信息是否对您有帮助!

于 2020-03-09T07:07:27.147 回答