GRPC調試工具


grpcurlgrpcui 都是調試grpc的利器,前者用於命令行,類似curl工具;后者是以web的形式進行調試的,類似postman工具。

有了這兩款工具,我們不用寫任何客戶端代碼,也能方便的調試接口數據。

這兩款工具的作者是同一人:http://github.com/fullstorydev

grpcurl

根據官方 README.md 文檔安裝即可。

export GOPROXY=https://mirrors.aliyun.com/goproxy/
go get github.com/fullstorydev/grpcurl
go install github.com/fullstorydev/grpcurl/cmd/grpcurl

這時,在 $GOPATH/bin 目錄下,生成一個 grpcurl 可執行文件。我們可以復制到 /usr/local/bin/ 下:

# mac
sudo cp `go env|grep 'GOPATH'|sed -e 's/GOPATH="//' -e 's/"//'`/bin/grpcurl /usr/local/bin/
chmod +x /usr/local/bin/grpcurl

執行個命令,驗證下:

$ grpcurl -version

grpcurl 1.3.2

輸出了版本號表示安裝成功了。

示例

下面這個GetMobileArea方法可以返回手機歸屬地信息,其中GRPC服務端地址:127.0.0.1:8105。我們測試一下:

$ grpcurl -plaintext -d '{"PhoneNum":"13523456666"}' 127.0.0.1:8105 Ys.Pb.ChituSms.ChituSmsServ/GetMobileArea

{
  "status": {
    "logid": "1233268494511693824"
  },
  "data": {
    "PhoneNum": "13523456666",
    "Province": "河南",
    "City": "鄭州",
    "ZipCode": "450000",
    "AreaZone": "0371",
    "CardType": "中國移動"
  }
}

-d表示傳參,Ys.Pb.ChituSms.ChituSmsServ/GetMobileArea分別表示命名空間+service名稱+方法名

如果提示:

Failed to compute set of methods to expose: server does not support the reflection API

這種情況下,加個反射就可以了,在 main.go 新增如下代碼即可:

//注冊反射
reflection.Register(s) 

再運行一次就行了。

grpcui

安裝方法和grpcurl一樣:

export GOPROXY=https://mirrors.aliyun.com/goproxy/
go get github.com/fullstorydev/grpcui
go install github.com/fullstorydev/grpcui/cmd/grpcui

# mac
sudo cp `go env|grep 'GOPATH'|sed -e 's/GOPATH="//' -e 's/"//'`/bin/grpcui /usr/local/bin/
chmod +x /usr/local/bin/grpcui
$ grpcui -version

grpcui dev build <no version set>

示例

下面以一個測試的grpc項目為例,假設業務端口號:8105。同樣需要在 main.go 新增如下代碼:

//注冊反射
reflection.Register(s) 

然后命令行運行工具:

$ grpcui -plaintext 127.0.0.1:8105

gRPC Web UI available at http://127.0.0.1:55984/

在瀏覽器中訪問:http://127.0.0.1:55984/

到這,我們看到 Service name、Method name 都出來了,傳輸參數直接在頁面上進行操作即可。

參考資料

1、Go gRPC 調試工具
https://studygolang.com/articles/24551?fr=sidebar
2、fullstorydev/grpcui: An interactive web UI for gRPC, along the lines of postman
https://github.com/fullstorydev/grpcui


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM