我已按照此处的说明使用Google Cloud Endpoints / ESP部署了gRPC服务器:
https://cloud.google.com/endpoints/docs/grpc/get-started-kubernetes-engine
在我的原型文件中,按照协议缓冲区命名约定(https://developers.google.com/protocol-buffers/docs/style#message-and-field-names),我的字段以snake_case命名,如下所示:
message MyMessage {
string my_field = 1;
}
当部署到Cloud Endpoints时,字段名称将转换为camelCase。因此,如果我使用HTTP端点调用API,则JSON响应如下所示:
{
"myField":"field value"
}
如果我使用GRPC客户端(Node.js)调用服务,则响应对象将以原始格式返回:
{
"my_field":"field value"
}
在Cloud Endpoints Developer Portal文档中,字段名称也转换为驼峰大小写。
我希望对GRPC和HTTP客户端都使用蛇形保护套,因为我要替换现有的API。如果我可以防止字段名称被转换,则基本上可以将后端切换到新服务,而无需对客户端进行任何更改。
在转码为HTTP / JSON时,是否有一种方法可以强制ESP使用驼峰式案例字段名称?
答案 0 :(得分:1)
我将用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
答案 1 :(得分:0)
不幸的是,没有一个简单的方法。我刚刚为此功能申请了issue增强功能。
我们将尝试分配资源以获取资源。