首页 > 解决方案 > 如何将 gRPC 服务公开为 Protobuf 和 JSON

问题描述

我们可以使用两种编码(Protobuf 和 JSON)公开 gRPC 服务(在 JAVA 中)吗?就像我们可以在 HTTP+REST 中做的那样,服务器创建和设置响应头基础客户端Content-Type :application/json or application/xml or application/proto)。

标签: grpcgrpc-java

解决方案


gRPC 支持流式传输,在 HTTP/1 中无法实现。无法将 gRPC 服务作为经典 HTTP+REST 提供。

Twirp 应该非常接近你想要的。它使用纯 HTTP/1,从 .proto 文件中的服务定义生成。它只支持一元方法。 https://twitchtv.github.io/twirp/docs/intro.html

如果您希望通过 Web 浏览器使用您的服务,gRPC-web 是一种替代方案。它支持一元和服务器流方法。最重要的是,您可以使用 envoy 代理将现有的 gRPC 服务作为 gRPC-web 提供。


推荐阅读