关于 grpc-gateway http 请求 stream 流式响应时无法解析返回值
问题:
http 请求 stream 流式响应时,响应内容正确,但使用 runtime.jsonpb.decode 时,解码结果为一组 nil。
解决方法:
- 升级 grpc-gateway 版本:将 grpc-gateway 升级到最新版(>=2.4.0)。
-
修改 protobuf 文件:在 protobuf 文件中,由于 grpc-gateway 返回值中多了一个 result 字段,需要新增以下 message:
message httpresp { resp result = 1; }
登录后复制
-
修改解码逻辑:在解码时,使用新定义的 httpresp message 代替 resp message:
var result *pb.httpresp // 注意不要使用 *pb.resp err := dencoder.decode(&result) // &result
登录后复制
修改后的单元测试示例:
for { var result *pb.HttpResp // 注意不要使用 *pb.Resp err := dencoder.Decode(&result) // &result if err == nil { t.Logf("resp: %+v", result) } else { t.Logf("%+v", err) break } }
登录后复制
以上就是gRPC-Gateway HTTP 请求 Stream 流式响应时,返回值无法解析,如何解决?的详细内容,更多请关注抖狐科技其它相关文章!
-
如何使用 Golang 函数遍历稀疏的数据结构?
go 提供了内置 for 和 range 函数,可用于遍历稀疏数据结构:使用 for 遍历 map 中的键值对:for key, value := range sparsemap { ... }使用简...
-
系统重装后怎么才能提速
重装系统后提速方法:1. 卸载不必要程序;2. 优化启动项;3. 禁用后台服务;4. 清理垃圾文件;5. 启用 windows defender;6. 使用 ssd;7. 升级 ram;8. 更新驱动...
-
微信朋友圈为什么有广告
微信朋友圈出现广告的主要原因有:商业化变现需求、用户流量价值、优化用户体验、竞争环境等因素。通过朋友圈广告,微信可获得广告收入,触达精准受众,提升竞争力。同时,微信注重广告的社交性和原生性,尽量减少对...
-
js如何把值填到表格中
javascript 向表格填充值的方法:innerhtml:编辑单元格的 html 内容。textcontent:编辑单元格的纯文本内容。createelement 和 appendchild:创建...
-
PHP 函数如何通过网络调用外部函数?
通过网络调用外部函数:PHP 函数(带实战案例) 前言 PHP 提供了一个强大的函数 file_get_contents(),它允许你从远程 URL 获取数据。通过利用此函数,你可以通过网络调用外部函...