你的位置:开元ky888棋牌官网APP下载 > 解决方案 > 撸了一个可调试 gRPC 的 GUI客户端

撸了一个可调试 gRPC 的 GUI客户端

发布日期:2022-08-07 18:22    点击次数:183

本文转载自微信群众号「crossoverJie」,作者crossoverJie 。转载本文请联络crossoverJie群众号。

前言

寻常巨匠写完 gRPC 接口后是怎么样测试的?每每有下列几个编制:

写单测代码,自身仿照客户端测试。

可以或许搭一个 gRPC-Gateway 服务,这样就能在 postman 及第行仿照。

但这两种编制都不是特殊优雅;第一种编制当要求组织体嵌套特殊宏壮时,在代码中回护起来就不是很直观;而且代码会特殊长。

第二种编制在 postman 中与要求 HTTP 接口同样,看起来极度直观;但需要额为回护一个 gRPC-Gateway 服务,同时接口定义发生变换时也得从头宣布,应用起来稍显宏壮。

是以我颠末一番征采找到了两个看起来还不错的器材:

BloomRPC https://github.com/fullstorydev/grpcui

首先看 BloomRPC 页面美观,功用也很完善;但却有个极度惆怅惆怅之处,那就是不支持 int64 数据的要求, 会有精度成就。

这里我写了一个俭朴的接口,间接将要求的 int64 前去归来离去。

func (o *Order) Create(ctx context.Context, in *v1.OrderApiCreate) (*v1.Order, error) {  fmt.Println(in.OrderId)  return &v1.Order{   OrderId: in.OrderId,   Reason:  nil,  }, nil } 

会缔造服务端收到的数据精度已经遗失了。

这个在我们大量应用 int64 的业务中极度惆怅惆怅,大部份接口都无法用了。

grpcui 是我在应用了 BloomRPC 一段时光今后才缔造的器材,功用也相比完善; BloomRPC 中的精度成就也不存在。

但因为我从前已经习性了在 BloomRPC 中去调试接口,解决方案加之日常开发进程中我的阅读器险些都是开了几十个 tap 页面,导致在个中找到 grpcui 不是那末方便。

所以我就想着能不克不迭有一个近似于 BloomRPC 的独立 APP,也支持 int64 的器材。

操办

找了一圈,貌似没有缔造。刚好前段时光写了一个 gRPC 的压测器材,着实已经把该 APP 需要的焦点功用也就是泛化调用完成为了。

因为焦点才能是用 Go 完成的,所以这个 APP 最佳也是用 Go 来写,这样复用代码会更方便一些;刚好也想看看用 Go 来完成 GUI 应用结果怎么样。

但惘然 Go 并无供应原生的 GUI 库支持,最后翻来找去缔造白一个库:fyne

从 star 上看用的相比多,同时也支持跨平台打包;所以终究就选择应用该库在构建这个应用。

焦点功用

全副 App 的交互流程我参考了 BloomRPC ,但作为一个不懂审美、策画的后端开发来说,全副进程中最难的就是计划了。

这是我花了好几个晚上调试进去的第一版页面,诚然也能用但查察申请和照顾数据极度利方便。

是以又花了一个周末终究版以下(乍一看貌似没不同):

诚然页面上与 BloomRPC 另有必定差距,但也不影响应用;关键是 int64 的成就经管了;又可以或许舒畅的撸码了。

按部就班

有近似需要也想休会的同伙可以或许在这里下载应用:https://github.com/crossoverJie/ptg/releases/download/0.0.2/ptg-mac-gui.tar

因为我手上姑且没有 Windows 电脑,所以就没有打包 exe 顺序;有相干需要的同伙可以或许自行下载源码编译:

git clone git@github.com:crossoverJie/ptg.git cd ptg make pkg-win 
后续策画

今后版本的功用还相比简陋,只支持经常使用的 unary 调用;后续也会缓缓加之 stream、metadata、事变空间的存储与还原等支持。

对页面、交互有倡导也迎接提出。

原先是操办上传到 brew 方便按部就班的,终局折腾了一夜因为数据不敷被拒了,所以对巨匠有协助或许感兴致的话辅助点点关注(咋有种直播带货的感到??)

 

源码地点:https://github.com/crossoverJie/ptg

 



Powered by 开元ky888棋牌官网APP下载 @2013-2022 RSS地图 HTML地图