gRpc接口调试工具BloomRpc与gRPCurl傻瓜教程,帮助微服务rpc开发便捷调试
本文向大家推荐两个好用的grpc调试工具,BloomRPC和gRPCurl。主要包括使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
我们在开发rpc服务时,如果不被api服务调用,则无法调试,那有没有一个工具像postman一样直接调试gRpc的接口呢, 所以我们要想直接调试gRpc的接口,答案肯定是有的,就是本文要介绍的BloomRpc和gRPCurl。两者都可以用于调试gRPC服务。
BloomRPC
BloomRPC是图形化的 gRPC 开发和测试工具。由于http测试有postman工具,在使用GRPC框架的时候,我们使用BloomRPC工具。
安装
下载地址
bloomRpc下载地址:github.com/bloomrpc/bl…
从地址下载选择你需要对应的版本。

windows安装
下载exe可执行文件,双击下一步即可。

macos安装
brew install --cask bloomrpc

使用
1、打开BloomRPC,看到如下界面

2、导入proto文件

3、执行
选择一个接口,自动会添加测试参数,输入IP和端口号,确保服务器已经启动,不然无法连接,查看结果

\
gRPCurl
除了使用BloomRPC工具,我们还可以使用类似curl这样的,直接通过终端,在命令行发起请求。
gRPCurl用于从命令行调用gRPC服务器支持的RPC方法,gRPC使用二进制编码(protobuf), 不能利用常规的curl工具(早期的curl版本还不支持HTTP/2)。
grpcurl 安装
macos
brew install grpcurl
Docker
# Download image
docker pull fullstorydev/grpcurl:latest
# Run the tool
docker run fullstorydev/grpcurl api.grpc.me:443 list
go tool
go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest
grpcurl 使用
在使用 grpcurl时,需要通过 -cert 和 -key 参数设置公钥和私钥文件,表示链接启用了 TLS 协议的服务。
对于没有启用 TLS 协议的 gRPC 服务,通过 -plaintext 参数忽略 TLS 证书的验证过程。
如果是 Unix Socket 协议,则需要指定 -unix 参数。
服务注册
func main() {
server := grpc.NewServer()
// 注册 grpcurl 所需的 reflection 服务
reflection.Register(server)
//注册
helloworldPb.RegisterHelloworldServer(server, new(Helloworld))
lis, err := net.Listen("tcp", ":9000")
if err != nil {
panic(err.Error())
}
server.Serve(lis)
}
reflection.Register(server)这行代码很重要,一定要包含,不然会报没有启动reflection反射服务。 Failed to list services: server does not support the reflection API
查看某个服务的方法列表
grpcurl -plaintext 127.0.0.1:9000 list

查看某个服务的方法列表
grpcurl -plaintext 127.0.0.1:9000 list helloworld.Helloworld

查看方法定义
grpcurl -plaintext 127.0.0.1:9000 describe helloworld.Helloworld.GetData

查看请求参数
grpcurl -plaintext 127.0.0.1:9000 describe helloworld.ReqData

请求服务
grpcurl -d '{"name": "test"}' -plaintext 127.0.0.1:9000 helloworld.Helloworld.GetData

-d 参数后面也可以跟 @,表示从标准输入读取 json 参数,一般用于输入比较复杂的 json 数据,也可以用于测试流方法。
grpcurl -d @ -plaintext 127.0.0.1:9000 helloworld.Helloworld.GetData
转载自:https://juejin.cn/post/7129414359419191303