grpcurl
和 grpcui
都是调试grpc
的利器,前者用于命令行,相似curl
工具;后者是以web
的形式进行调试的,相似postman
工具。git
有了这两款工具,咱们不用写任何客户端代码,也能方便的调试接口数据。github
这两款工具的做者是同一人:http://github.com/fullstorydev 。golang
根据官方 README.md
文档安装便可。web
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
执行个命令,验证下:bash
$ grpcurl -version grpcurl 1.3.2
输出了版本号表示安装成功了。curl
下面这个GetMobileArea
方法能够返回手机归属地信息,其中GRPC服务端地址:127.0.0.1:8105
。咱们测试一下:ide
$ 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名称+方法名
。工具
若是提示:post
Failed to compute set of methods to expose: server does not support the reflection API
这种状况下,加个反射就能够了,在 main.go 新增以下代码便可:
//注册反射 reflection.Register(s)
再运行一次就好了。
安装方法和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 都出来了,传输参数直接在页面上进行操做便可。
一、Go gRPC 调试工具
https://studygolang.com/articles/24551?fr=sidebar
二、fullstorydev/grpcui: An interactive web UI for gRPC, along the lines of postman
https://github.com/fullstorydev/grpcui