天天看點

撸了一個可調試 gRPC 的 GUI 用戶端

撸了一個可調試 gRPC 的 GUI 用戶端

前言

平時大家寫完

gRPC

接口後是如何測試的?往往有以下幾個方法:

  1. 寫單測代碼,自己模拟用戶端測試。
    撸了一個可調試 gRPC 的 GUI 用戶端
  2. 可以搭一個

    gRPC-Gateway

    服務,這樣就可以在

    postman

    中進行模拟。

但這兩種方法都不是特别優雅;第一種方法當請求結構體嵌套特别複雜時,在代碼中維護起來就不是很直覺;而且代碼會特别長。

第二種方法在 postman 中與請求 HTTP 接口一樣,看起來非常直覺;但需要額為維護一個

gRPC-Gateway

服務,同時接口定義發生變化時也得重新釋出,使用起來稍顯複雜。

于是我經過一番搜尋找到了兩個看起來還不錯的工具:

  • BloomRPC
  • https://github.com/fullstorydev/grpcui
撸了一個可調試 gRPC 的 GUI 用戶端

首先看

BloomRPC

頁面美觀,功能也很完善;但卻有個非常難受的地方,那就是不支援

int64

資料的請求, 會有精度問題。

撸了一個可調試 gRPC 的 GUI 用戶端
這裡我寫了一個簡單的接口,直接将請求的

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

的業務中非常難受,大部分接口都沒法用了。

撸了一個可調試 gRPC 的 GUI 用戶端

grpcui

是我在使用了

BloomRPC

一段時間之後才發現的工具,功能也比較完善;

BloomRPC

中的精度問題也不存在。

但由于我之前已經習慣了在

BloomRPC

中去調試接口,加上日常開發過程中我的浏覽器幾乎都是開了幾十個 tap 頁面,導緻在其中找到

grpcui

不是那麼友善。

是以我就想着能不能有一個類似于

BloomRPC

的獨立 APP,也支援

int64

的工具。

準備

找了一圈,貌似沒有發現。恰好前段時間寫了一個

gRPC

的壓測工具,其實已經把該 APP 需要的核心功能也就是泛化調用實作了。

由于核心能力是用 Go 實作的,是以這個 APP 最好也是用 Go 來寫,這樣複用代碼會更友善一些;正好也想看看用 Go 來實作 GUI 應用效果如何。

但可惜 Go 并沒有提供原生的 GUI 庫支援,最後翻來找去發現了一個庫:fyne

star

上看用的比較多,同時也支援跨平台打包;是以最終就決定使用該庫在建構這個應用。

核心功能

整個 App 的互動流程我參考了

BloomRPC

,但作為一個不懂審美、設計的後端開發來說,整個過程中最難的就是布局了。

撸了一個可調試 gRPC 的 GUI 用戶端

這是我花了好幾個晚上調試出來的第一版頁面,雖然也能用但檢視請求和響應資料非常不友善。

于是又花了一個周末最終版如下(乍一看貌似沒差別):

撸了一個可調試 gRPC 的 GUI 用戶端

雖然頁面上與

BloomRPC

還有一定差距,但也不影響使用;關鍵是

int64

的問題解決了;又可以愉快的撸碼了。

安裝

有類似需求也想體驗的朋友可以在這裡下載下傳使用:

https://github.com/crossoverJie/ptg/releases/download/0.0.2/ptg-mac-gui.tar

由于我手上暫時沒有

Windows

電腦,是以就沒有打包 exe 程式;有相關需求的朋友可以自行下載下傳源碼編譯:

git clone [email protected]:crossoverJie/ptg.git
cd ptg
make pkg-win
           

後續計劃

目前版本的功能還比較簡陋,隻支援常用的

unary

調用;後續也會逐漸加上

stream

metadata

、工作空間的存儲與還原等支援。

對頁面、互動有建議也歡迎提出。

撸了一個可調試 gRPC 的 GUI 用戶端
原本是準備上傳到

brew

友善安裝的,結果折騰了一晚上因為資料不夠被拒了,是以對大家有幫助或者感興趣的話幫忙點點關注(咋有種直播帶貨的感覺🐶)

源碼位址:https://github.com/crossoverJie/ptg

作者:

crossoverJie

出處:

https://crossoverjie.top

撸了一個可調試 gRPC 的 GUI 用戶端

歡迎關注部落客公衆号與我交流。

本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出,

如有問題, 可郵件(crossoverJie#gmail.com)咨詢。