gRPC系列之二-evans工具的使用
December 2, 2023
evans(https://github.com/ktr0731/evans)是一款用于调试gRPC接口的工具,利用它可以不用编写客户端代码就可以测试gRPC服务,非常方便开发调试。
基于上一篇文章中的gRPC接口,我们展示一下evans库的使用。
安装 #
本机是macOS操作系统,安装方法如下:
brew tap ktr0731/evans
brew install evans
基础测试 #
这里介绍一下evans的两种使用方法:基于proto文件的测试和基于反射的测试。
基于proto文件测试 #
先运行上文中的服务。
修改Makefile文件,添加如下代码:
greet-evans:
evans --proto greet/proto/greet.proto --port 5632 repl
执行 make greet-evans,然后输入show package结果如下:
proto.GreetService@127.0.0.1:5632> show package
+---------+
| PACKAGE |
+---------+
| proto |
+---------+
这里只有一个名为proto的package。执行package proto:
proto.GreetService@127.0.0.1:5632> package proto
继续输入show service,查看service列表:
proto@127.0.0.1:5632> show service
+--------------+-------+--------------+---------------+
| SERVICE | RPC | REQUEST TYPE | RESPONSE TYPE |
+--------------+-------+--------------+---------------+
| GreetService | Greet | GreetRequest | GreetResponse |
+--------------+-------+--------------+---------------+
我们可以看到SERVICE列展示的就是我们定义的服务名,RPC列展示的是方法名。
下面调用Greet方法:
proto@127.0.0.1:5632> service GreetService
proto.GreetService@127.0.0.1:5632> call Greet
greeting (TYPE_STRING) => 张三
{
"result": "Hello 张三 now time is:2023-12-02 16:22:32.230025 +0800 CST m=+6074.773143501"
}
proto.GreetService@127.0.0.1:5632>
可以看到,我们传递了参数“张三”,收到的响应正常。
基于反射的测试 #
我们也可以不基于proto文件,通过反射测试接口。
首先,停止服务。然后,修改服务端代码,添加如下内容:
// 反射服务
reflection.Register(s)
然后重新编译运行服务端代码。
接下来,我们运行以下代码来运行evans:
evans -r repl --port 5632
下面的测试步骤,和基于proto文件的测试方法一样。
结语 #
本文介绍了evans的简单使用,想了解详情,可以到访问仓库地址:https://github.com/ktr0731/evans。
除了evans,也有其它工具可以用来测试grpc接口,比如GoLand自带的grpc工具,以及postman。