我试图用grpcurl检查gRPC服务器的操作


简介

检查gRPC服务器的操作我该怎么办? .. ..在研究了各种东西之后,介绍了我到达的grpcurl。
似乎有各种功能,但仅会介绍其中一些功能。

确认的环境

gRPC服务器配置

  • 春季靴1.5.10
  • grpc-spring-boot-starter 2.4.0

开发环境

  • 视窗

什么是grpcurl?

https://github.com/fullstorydev/grpcurl
它是一个可以像curl命令一样实现与gRPC服务器交互的工具。
当您运行命令时,gRPC服务器响应将以json格式返回。

详细信息写在链接中,所以我认为您可以阅读。

您需要安装go。

准备工作(Windows)

1.安装Go

下载-安装
https://golang.org/dl/
请从该站点下载适合您的环境的一种。
对于Windows,您可以按照安装程序的说明完成它,而不会出现任何问题。

检查设置
对于Windows,已将以下内容添加到环境变量中:
* GOPATH:%USERPROFILE%去
* GOROOT:安装过程中指定的目录
*添加路径:%GOPATH%bin。

安装确认

在命令提示符下键入go version,如果显示版本信息,则表明安装已完成。

1
> go version

*如果无法执行,请重新启动命令提示符或检查系统环境变量的路径。

2.安装grpcurl

下载-安装

您所要做的就是执行以下命令。

1
2
> go get github.com/fullstorydev/grpcurl
> go install github.com/fullstorydev/grpcurl/cmd/grpcurl

grpcurl命令将安装在先前确认的$ GOPATH环境变量中指定位置的bin子文件夹中。
默认情况下,为Path指定%GOPATH%bin,因此您应该能够在命令提示符下立即执行它。
如果无法执行,请检查路径规范。

安装确认

如果可以执行以下命令,则grpcurl的安装完成。

1
> grpcurl -help

3.反射设置

在gRPC服务器上启用反射功能。
*当未启用反射时,Grpcurl还提供了一种执行方法,但是这次将其省略。 :sweat_smile:

如果使用grpc-spring-boot-starter,只需将以下设置添加到application.yml。

application.yml

1
2
grpc:
  enable-reflection: true

注意:根据grpc-spring-boot-starter的版本,不支持。 (2.3.2?)

如果您不使用

起动器,则可以执行以下步骤。 (未确认)
https://github.com/grpc/grpc-java/blob/master/documentation/server-reflection-tutorial.md

您现在准备好了。

TODO Preparation(Mac版)

//即将推出...

尝试使用

启动要检查操作的gRPC服务器。

查看服务清单

1
> grpcurl -plaintext localhost:6565 list

-纯文本
您可以在纯文本模式下检查操作。
如果省略,则可以通过TLS进行确认。

本地主机:6565
指定gRPC服务器的主机名和端口号。

执行后,将显示服务器端的服务列表,如下所示。

执行结果

1
2
3
4
5
> grpcurl -plaintext localhost:6565 list
helloworld.HelloWorldService
goodbyeworld.GoodByeWorldService
grpc.health.v1.Health
grpc.reflection.v1alpha.ServerReflection

显示方法列表

1
> grpcurl -plaintext localhost:6565 list helloworld.HelloWorldService

helloworld.HelloWorldService
在命令后指定服务名称以获取服务列表。

执行结果

1
2
> grpcurl -plaintext localhost:6565 list helloworld.HelloWorldService
Greeting

服务电话

1
> grpcurl -plaintext localhost:6565 helloworld.HelloWorldService/Greeting

helloworld.HelloWorldService /问候语
指定列表中确认的服务名称/方法名称。

执行后,结果将以json格式显示。

执行结果

1
2
3
4
> grpcurl -plaintext localhost:6565 helloworld.HelloWorldService/Greeting
{
  "message": "Hello World!"
}

服务电话(带有请求参数)

1
> grpcurl -plaintext -d '{"lang":"Java"}' localhost:6565 helloworld.HelloWorldService/Greeting

您可以在

-d之后以json格式编写参数。
它写在该网站上,但效果不佳,因为单引号很生气:cold_sweat:
所以。 .. ..

1
> grpcurl -plaintext -d @ localhost:6565 helloworld.HelloWorldService/Greeting

我尝试了此操作是因为它被引入,您可以通过在

-d之后指定'@'来使用STDIN输入参数。

1
2
3
4
5
> grpcurl -plaintext -d @ localhost:6565 helloworld.HelloWorldService/Greeting
{
  "lang": "Java"
}
EOM

EOM
您可以在Windows上输入Ctrl Z,在Unix上输入CtrlD。
在Windows命令提示符下,它显示为^Z

执行该命令时,结果得到了出色的返回。 :relaxed:

执行结果

1
2
3
4
5
6
7
8
> grpcurl -plaintext -d @ localhost:6565 helloworld.HelloWorldService/Greeting
{
  "lang": "Java"
}
^Z
{
  "message": "Hello Java World!"
}

奖金

如果要将结果输出到文件,则如下所示。

1
grpcurl -plaintext localhost:6565 helloworld.HelloWorldService/Greeting > GreetingResult.json

GreetingResult.json

1
2
3
{
  "message": "Hello World!"
}

结束