写完grpc服务端程序后,使用以下客户端进行测试,减少自己写测试客户端的工作。

gRPCurl

这是命令行工具。

安装

我这里直接使用已经编译好的执行文件,github下载最新版:https://github.com/fullstorydev/grpcurl/releases。

解压后,得到grpcurl执行文件,

1
2
3
grpcurl --version

sudo cp grpcurl /usr/local/bin

也可以使用go方式安装,或者源码安装make install;

用法介绍

使用 gRPC 反射自动发现 gRPC 服务。

  • 查看服务列表

    1
    2
    3
    4
    grpcurl -plaintext 127.0.0.1:8080 list

    grpc.reflection.v1alpha.ServerReflection
    proto.Greeter
  • 查看某个服务的方法列表

    1
    2
    3
    grpcurl -plaintext 127.0.0.1:8080 list proto.Greeter

    proto.Greeter.SayHello
  • 查看方法定义

    1
    2
    3
    4
    grpcurl -plaintext 127.0.0.1:8080 describe proto.Greeter.SayHello

    proto.Greeter.SayHello is a method:
    rpc SayHello ( .proto.HelloRequest ) returns ( .proto.HelloReply );
  • 查看请求参数

    1
    2
    3
    4
    5
    6
    grpcurl -plaintext 127.0.0.1:8080 describe proto.HelloRequest

    proto.HelloRequest is a message:
    message HelloRequest {
    string name = 1;
    }
  • 调用服务,参数传json即可

    1
    2
    3
    4
    5
    grpcurl -d '{"name": "abc"}' -plaintext 127.0.0.1:8080  proto.Greeter.SayHello

    {
    "message": "hello"
    }

参考grpc

gRPCui

gRPCui基于gRPCurl,并为gRPC添加了交互式 Web UI,类似于 Postman 和 Swagger UI 等工具。

github:https://github.com/fullstorydev/grpcui下载源码

安装:

1
make install

用法:

1
grpcui -plaintext localhost:12345

会自动打开网页,可以看到服务端提供的服务,方法,以及每个方法对应的参数设置。

issue

测试时发现gRPCui目前不支持一个服务多个service的情况,使用gRPCurl没有该问题。