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

简介: 写完 gRPC 接口后是如何测试的?往往有以下几个方法:

前言


平时大家写完 gRPC 接口后是如何测试的?往往有以下几个方法:


  1. 写单测代码,自己模拟客户端测试。


网络异常,图片无法展示
|


  1. 可以搭一个 gRPC-Gateway 服务,这样就可以在 postman 中进行模拟。


但这两种方法都不是特别优雅;第一种方法当请求结构体嵌套特别复杂时,在代码中维护起来就不是很直观;而且代码会特别长。


第二种方法在 postman 中与请求 HTTP 接口一样,看起来非常直观;但需要额为维护一个 gRPC-Gateway 服务,同时接口定义发生变化时也得重新发布,使用起来稍显复杂。


于是我经过一番搜索找到了两个看起来还不错的工具:




网络异常,图片无法展示
|


首先看 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 的问题解决了;又可以愉快的撸码了。


安装


有类似需求也想体验的朋友可以在这里下载使用:github.com/crossoverJi…


由于我手上暂时没有 Windows 电脑,所以就没有打包 exe 程序;有相关需求的朋友可以自行下载源码编译:


git clone git@github.com:crossoverJie/ptg.git
cd ptg
make pkg-win


后续计划


当前版本的功能还比较简陋,只支持常用的 unary 调用;后续也会逐步加上 streammetadata、工作空间的存储与还原等支持。


对页面、交互有建议也欢迎提出。


网络异常,图片无法展示
|

源码地址:github.com/crossoverJi…


相关文章
|
Web App开发 安全 网络协议
Qt开发技术:QWebSocket客户端、服务端介绍与开发
Qt开发技术:QWebSocket客户端、服务端介绍与开发
Qt开发技术:QWebSocket客户端、服务端介绍与开发
|
3月前
|
JSON API 数据格式
深度剖析!Python Web 开发中 RESTful API 的每一个细节,你不可不知的秘密!
在 Python Web 开发中,RESTful API 是构建强大应用的关键,基于 Representational State Transfer 架构风格,利用 HTTP 卞性能。通过 GET、POST、PUT 和 DELETE 方法分别实现资源的读取、创建、更新和删除操作。示例代码展示了如何使用 Flask 路由处理这些请求,并强调了状态码的正确使用,如 200 表示成功,404 表示未找到资源等。
54 5
|
4月前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
203 0
《QT从基础到进阶·十六》QT实现客户端和服务端的简单交互
《QT从基础到进阶·十六》QT实现客户端和服务端的简单交互
166 0
|
Go Docker 微服务
几种gRPC调试工具
几种gRPC调试工具
188 0
|
测试技术 API
【.NET6】gRPC服务端和客户端开发案例,以及minimal API服务、gRPC服务和传统webapi服务的访问效率大对决
前言:随着.Net6的发布,Minimal API成了当下受人追捧的角儿。而这之前,程序之间通信效率的王者也许可以算得上是gRPC了。那么以下咱们先通过开发一个gRPC服务的教程,然后顺势而为,再接着比拼一下minimal api服务和gRPC服务在通信上的效率。
470 0
【.NET6】gRPC服务端和客户端开发案例,以及minimal API服务、gRPC服务和传统webapi服务的访问效率大对决
|
Go 流计算
gRPC阅读日记(七)客户端的RPC构建2
gRPC阅读日记(七)客户端的RPC构建2
|
测试技术 Go
gRPC阅读日记(五)创建grpc的服务端和客户端
gRPC阅读日记(五)创建grpc的服务端和客户端
104 0
|
API
超实用的 gRPC 客户端调试工具
超实用的 gRPC 客户端调试工具
747 0
超实用的 gRPC 客户端调试工具
|
测试技术
loadrunner简单使用——HTTP,WebService,Socket压力测试脚本编写
先说明一下,本人是开发,对测试不是特别熟悉,但因工作的需要,也做过一些性能测试方面的东西。比较久之前很简单的用过,最近又用到了,熟悉一下。现做一个总结。 使用loadrunner进行压力测试主要分两步,第一步是编写脚本(比较重点),第二步执行测试(配置都是在界面上点点就行了,当然我只的是比较简单的,能满足日常需要的),第三步分析结果(这一步比较高深,但是对于我来说能看懂简单的性能指标就OK了)。
1287 0