Google Cloud Endpoints (ESP) gRPC 转码为驼峰式大小写

Google Cloud Endpoints (ESP) gRPC transcoding to camel case

我已经使用 Google Cloud Endpoints / ESP 部署了 gRPC 服务器,按照此处的说明进行操作:

https://cloud.google.com/endpoints/docs/grpc/get-started-kubernetes-engine

在我的原型文件中,我的字段在 snake_case 中命名,遵循 Protocol Buffers 命名约定 (https://developers.google.com/protocol-buffers/docs/style#message-and-field-names),如下所示:

message MyMessage {
  string my_field = 1;
}

部署到 Cloud Endpoints 时,字段名称会转换为驼峰式。因此,如果我使用 HTTP 端点调用 API,JSON 响应如下所示:

{
  "myField":"field value"
}

如果我使用 GRPC 客户端 (Node.js) 调用服务,则响应对象以原始格式返回:

{
  "my_field":"field value"
}

Cloud Endpoints Developer Portal 文档中的字段名称也转换为驼峰式大小写。

我更愿意为 GRPC 和 HTTP 客户端使用 snake case,因为我要替换现有的 API。如果我可以防止字段名称被转换,我基本上可以将后端切换到新服务而无需对客户端进行任何更改。

有没有办法强制 ESP 在转码为 HTTP/JSON 时使用驼峰式字段名称?

不幸的是,没有简单的方法。我刚刚为此功能请求提交了增强 issue

我们将尝试分配资源以获取它。

我正在使用 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