Envoy 的 json_transcoder_filter 介绍

json_transcoder_filter 实现 HTTP/1.1+JSON 与 HTTP/2+GRPC 的互转。

使用第三方库 grpc-httpjson-transcoding 完成 json 与 grpc 的协议转换,转换规则由 http.proto 定义。

http.proto 通过注解(Annotations)为 GRPC 接口添加 RESTful HTTP 接口映射。

json_transcoder_filter 对 stream 有一定支持,由于它是基于 HTTP/1.1,本质上是请求-响应模型,只支持 GRPC 的 Server streamingClient streaming ,不支持 Bidirectional streaming ,它将 GRPC 消息流映射为消息数组(Json array)。

示例项目

Envoy 带了一个 grpc-bridge 示例项目,依照它做了一个 grpc_json_transcoder 示例项目: