撸了一个可调试 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…


目录
打赏
0
0
0
0
1
分享
相关文章
MCP Server的五种主流架构与Nacos的选择
本文深入探讨了Model Context Protocol (MCP) 在企业级环境中的部署与管理挑战,详细解析了五种主流MCP架构模式(直连远程、代理连接远程、直连本地、本地代理连接本地、混合模式)的优缺点及适用场景,并结合Nacos服务治理框架,提供了实用的企业级MCP部署指南。通过Nacos MCP Router,实现MCP服务的统一管理和智能路由,助力金融、互联网、制造等行业根据数据安全、性能需求和扩展性要求选择合适架构。文章还展望了MCP在企业落地的关键方向,包括中心化注册、软件供应链控制和安全访问等完整解决方案。
1647 115
MCP Server的五种主流架构与Nacos的选择
网站价格监控:动态价格数据的实时抓取案例
本案例展示了如何利用爬虫技术实时抓取京东等电商平台的商品信息、价格及用户评价,通过代理IP、Cookie和User-Agent确保数据稳定采集。关键数据分析包括价格动态监控、评价趋势分析和竞争情报获取,助力商家制定策略。代码从简单请求逐步演进为具备异常处理、数据解析等功能的完整体系,并设计了「技术关系图谱」,直观展示系统模块间的关系,为开发者提供全局视角和技术路径参考。
676 0
网站价格监控:动态价格数据的实时抓取案例
阿里云服务器计算型c7/c8y/c8i,通用型g7/g8y/g8i,内存型r7/r8y/r8i区别及选择参考
为了满足不同企业级用户的多样化需求,阿里云在当下的活动中推出了多款计算型、通用型和内存型的云服务器实例,包括计算型c7/c8y/c8i、通用型g7/g8y/g8i以及内存型r7/r8y/r8i等。这些实例各具特色,适用于不同的应用场景和业务需求。本文将为您详细解析这些实例的区别,以及选择参考,帮助您根据自己的需求选择合适的阿里云服务器实例。
TypeScript :使用mock提供数据&as const 的使用&tsconfig.json配置
本文介绍了如何在项目中使用 Mock 提供数据,包括安装依赖、配置 Vite 和 TypeScript,以及如何使用 `as const`、元组和 tsconfig.json 配置文件。通过这些配置,可以实现更灵活和高效的开发体验。
148 0
【网安AIGC专题10.19】论文6(顶会ISSTA 2023):提出新Java漏洞自动修复数据集:数据集 VJBench+大语言模型、APR技术+代码转换方法+LLM和DL-APR模型的挑战与机会
【网安AIGC专题10.19】论文6(顶会ISSTA 2023):提出新Java漏洞自动修复数据集:数据集 VJBench+大语言模型、APR技术+代码转换方法+LLM和DL-APR模型的挑战与机会
693 0
Flutter 弃用 WillPopScope 使用 PopScope 替代方法
了解如何在 Flutter 3.16 中将弃用的 WillPopScope 替换为 PopScope,并学习如何升级您的 Flutter 应用程序。详细指南和最佳实践,帮助您顺利迁移和更新您的导航逻辑。
491 7
Flutter 弃用 WillPopScope 使用 PopScope 替代方法
MPLS VPN 跨域OptionB
使用跨域方式B实现两家公司的通信
如何调用API获取你想要的数据
在现代软件开发中,API(应用程序编程接口)已经成为了连接不同系统和服务的桥梁。通过调用API,我们可以从各种数据源中获取所需的数据,并将其集成到我们的应用程序中。本文将介绍如何调用API获取你想要的数据,并提供详细的代码示例。
几种gRPC调试工具
几种gRPC调试工具
282 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问