gRPC入门系列之2-evans工具的使用

gRPC入门系列之2-evans工具的使用

December 2, 2023
Grpc, 微服务
Grpc

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。