kubernetes - Google Cloud Endpoints(ESP)gRPC转码为驼峰式保护套

标签 kubernetes google-cloud-platform google-kubernetes-engine google-cloud-endpoints grpc

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

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

在我的原始文件中,按照 Protocol Buffer 命名约定(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使用驼峰式案例字段名称?

最佳答案

我将用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

关于kubernetes - Google Cloud Endpoints(ESP)gRPC转码为驼峰式保护套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57700842/

相关文章:

python - Vertex AI - 查看管道输出

kubernetes - 通过 DNS 或静态 ClusterIP 为 PersistentVolume 配置 NFS 服务器

Kubernetes:如何指定自动缩放初始准备情况?

kubernetes - 如何连接 Gitlab 和本地 Kubernetes 集群

kubernetes - 如何使用 kubectl 和 jsonpath 将 configmap 的内容保存到文件中?

javascript - 来自 Google Storage 的流文件 -> 云功能 -> 存储速度非常慢或超时

google-cloud-platform - GCLB 背后的 Cloud Run - 使用 IAM 管理访问

具有单个 Pod 的 Kubernetes 作业与具有重启策略 OnFailure 的单个 Pod

mongodb - 错误 : unable to recognize "mongo-statefulset.yaml": no matches for kind "StatefulSet" in version "apps/v1beta1"

kubernetes - Prometheus 导出商应该作为边车容器运行还是在单独的部署中运行?