使用 grpcurl 通过命令行访问 gRPC 服务

说明

一般情况下测试 gRPC 服务,都是通过客户端来直接请求服务端。如果客户端还没准备好的话,也可以使用 BloomRPC 这样的 GUI 客户端。 如果环境不支持安装这种 GUI 客户端的话,那么有没有一种工具,类似于 curl 这样的,直接通过终端,在命令行发起请求呢? 答案肯定是有的,就是本文要介绍的 grpcurl。

grpc服务

使用之前写的示例项目:https://github.com/grpc-example/simple

关键代码:

1// 注册 grpcurl 所需的 reflection 服务
2reflection.Register(server)

使用grpcurl

查看服务列表

1grpcurl -plaintext 127.0.0.1:50001 list
2
3grpc.reflection.v1alpha.ServerReflection
4hello.Greeter

服务的方法列表

1grpcurl -plaintext 127.0.0.1:50001 list hello.Greeter
2
3hello.Greeter.SayHello

查看方法定义

1grpcurl -plaintext 127.0.0.1:50001 describe hello.Greeter.SayHello
2
3hello.Greeter.SayHello is a method:
4rpc SayHello ( .hello.HelloRequest ) returns ( .hello.HelloReply );

查看请求参数

1grpcurl -plaintext 127.0.0.1:50001 describe hello.HelloRequest
2
3message HelloRequest {
4  string name = 1;
5}

请求服务

1grpcurl -d '{"name": "wang"}' -plaintext 127.0.0.1:50001 hello.Greeter.SayHello
2
3{
4  "message": "Hello wang"
5}

-d 参数后面也可以跟 @,表示从标准输入读取 json 参数,一般用于输入比较复杂的 json 数据,也可以用于测试流方法。

注意:想结束输入时,需要先输入回车,然后输入ctrl+D

发布日期:2023-08-24 23:19 字数:101 用时 1分钟
tags:grpc grpcurl