gRPC网关

为什么用 grpc-gateway

etcd v3 使用 gRPC 作为它的消息协议。etcd 项目包括基于 gRPC 的 Go client 和 命令行工具 etcdctl,通过 gRPC 和 etcd 集群通讯。对于不支持 gRPC 支持的语言,etcd 提供 JSON 的 grpc-gateway。这个网关提供 RESTful 代理,翻译 HTTP/JSON 请求为 gRPC 消息。

使用 grpc-gateway

网关接受 etcd 的 protocol bufferJSON mapping 。注意 keyvalue 字段被定义为 byte 数组,因此必须在 JSON 中以 base64 编码.

  1. < < COMMENT
  2. https://www.base64encode.org/
  3. foo is 'Zm9v' in Base64
  4. bar is 'YmFy'
  5. COMMENT
  6. curl -L http://localhost:2379/v3alpha/kv/put \
  7. -X POST -d '{"key": "Zm9v", "value": "YmFy"}'
  8. curl -L http://localhost:2379/v3alpha/kv/range \
  9. -X POST -d '{"key": "Zm9v"}'

Swagger

生成的 Swagger API 定义可以在 rpc.swagger.json 找到.