gRpc接口调试工具BloomRpc与gRPCurl傻瓜教程,帮助微服务rpc开发便捷调试

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天,点击查看活动详情

本文向大家推荐两个好用的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
复制代码

猜你喜欢

转载自juejin.im/post/7129414359419191303