我已经使用Google Cloud Endpoint/ ESP部署了一个gRPC服务器,按照这里的说明进行操作:
https://cloud.google.com/endpoints/docs/grpc/get-started-kubernetes-engine
在我的proto文件中,我的字段按照协议缓冲区命名约定(https://developers.google.com/protocol-buffers/docs/style#message-and-field-names)以snake_case命名,如下所示:
message MyMessage {
string my_field = 1;
}在部署到云端点时,字段名称将转换为camelCase。因此,如果我使用HTTP端点调用API,JSON响应将如下所示:
{
"myField":"field value"
}如果我使用GRPC客户端(Node.js)调用服务,响应对象将以原始格式返回:
{
"my_field":"field value"
}在Cloud Endpoints Portal文档中,字段名称也会转换为驼峰式大小写。
我更喜欢对GRPC和HTTP客户端使用蛇形大小写,因为我正在替换现有的API。如果我可以防止字段名被转换,我基本上可以将后端切换到新的服务,而不需要对客户端进行任何更改。
有没有办法强制ESP在转码为HTTP/JSON时使用camel大小写字段名称?
发布于 2020-02-11 18:17:07
我正在使用ESP将我的grpc应用程序部署到k8s中,使用下面的配置,它将把protobuf响应代码转换为蛇形而不是驼峰形。
- name: esp
image: gcr.io/endpoints-release/endpoints-runtime:1
imagePullPolicy: Always
args: [
"--http_port=9000",
"--backend=grpc://127.0.0.1:8080",
"--service=xxxxxx",
"--version=xxxxxx",
"--transcoding_preserve_proto_field_names",
"--transcoding_always_print_primitive_fields"
]
ports:
- name: http
containerPort: 9000发布于 2019-08-31 00:41:01
不幸的是,没有一个简单的方法可以做到这一点。我刚刚提交了此功能请求的增强issue。
我们将尝试分配资源以使其进入。
https://stackoverflow.com/questions/57700842
复制相似问题