grpc - 如何将 gRPC 服务公开为 Protobuf 和 JSON
问题描述
我们可以使用两种编码(Protobuf 和 JSON)公开 gRPC 服务(在 JAVA 中)吗?就像我们可以在 HTTP+REST 中做的那样,服务器创建和设置响应头基础客户端Content-Type :
(application/json or application/xml or application/proto
)。
解决方案
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 提供。
推荐阅读
- python - 为什么我无法在 tkinter 中找到或输入已添加到文件的条目?
- javascript - 下一个 js 404 页面不起作用。可能是什么问题呢?
- excel - 如何使用excel转换间隔中的句子?
- git - Git - 删除存储库后拒绝推送初始代码
- node.js - Gruntjs 循环执行 grunt 的“复制文件”任务
- javascript - jquery改变输入序列化格式
- ffmpeg - 帧出现在 pts_time 之前 0.000057 秒使用 ffmpeg
- java - 如何将netbeans 12连接到Access数据库/ SQL数据库
- javascript - 角高图表的单独 html 按钮上的全屏功能
- gitlab - Gitlab CI 规则 - 仅在推送到源/主时运行