gRPC-JSON transcoder filter

gRPC-JSON transcoder configuration overview.

Configure gRPC-JSON transcoder

The filter config for the filter requires the descriptor file as well as a list of the gRPC services to be transcoded.

  1. {
  2. "name": "grpc_json_transcoder",
  3. "config": {
  4. "proto_descriptor": "proto.pb",
  5. "services": ["grpc.service.Service"],
  6. "print_options": {
  7. "add_whitespace": false,
  8. "always_print_primitive_fields": false,
  9. "always_print_enums_as_ints": false,
  10. "preserve_proto_field_names": false
  11. }
  12. }
  13. }

proto_descriptor

(required, string) Supplies the filename of the proto descriptor set for the gRPC services.

services

(required, array) A list of strings that supplies the service names that the transcoder will translate. If the service name doesn’t exist in proto_descriptor, Envoy will fail at startup. The proto_descriptor may contain more services than the service names specified here, but they won’t be translated.

print_options

(optional, object) Control options for response json. These options are passed directly to JsonPrintOptions. Valid options are:

  • add_whitespace

    (optional, boolean) Whether to add spaces, line breaks and indentation to make the JSON output easy to read. Defaults to false.

    always_print_primitive_fields

    (optional, boolean) Whether to always print primitive fields. By default primitive fields with default values will be omitted in JSON output. For example, an int32 field set to 0 will be omitted. Setting this flag to true will override the default behavior and print primitive fields regardless of their values. Defaults to false.

    always_print_enums_as_ints

    (optional, boolean) Whether to always print enums as ints. By default they are rendered as strings. Defaults to false.

    preserve_proto_field_names

    (optional, boolean) Whether to preserve proto field names. By default protobuf will generate JSON field names using the json_name option, or lower camel case, in that order. Setting this flag will preserve the original field names. Defaults to false.