grpcurl工具使用

438 阅读1分钟

1. 使用例子

首先下载个gRPC使用的example,先不必纠结gRPC的语法。

  • 下载:git clone -b v1.35.0 https://github.com/grpc/grpc-go
  • 切换到example: cd grpc-go/examples/route_guide
  • 启动server端:go run server/server.go

执行上述的步骤准备好验证环境后,我们需要下载好grpcurl这个工具,具体步骤参考github.com/fullstoryde…

由于example的server没有提供service反射的功能,因此我们在使用grpcurl这个工具的时候,还需要拿到原始的proto文件。

grpcurl常规操作:

  • list当前的server有哪些服务(根据proto文件):grpcurl -proto ./routeguide/route_guide.proto list

    ~/code/github/grpc-go/examples/route_guide$ grpcurl -proto ./routeguide/route_guide.proto list routeguide.RouteGuide

  • list特定的服务有哪些接口:grpcurl -proto ./routeguide/route_guide.proto list routeguide.RouteGuide

    ~/code/github/grpc-go/examples/route_guide$ grpcurl -proto ./routeguide/route_guide.proto list routeguide.RouteGuide routeguide.RouteGuide.GetFeature routeguide.RouteGuide.ListFeatures routeguide.RouteGuide.RecordRoute routeguide.RouteGuide.RouteChat

  • 使用plain(不加密)的方式访问server的一个接口:grpcurl -proto ./routeguide/route_guide.proto -plaintext -d '{"latitude": 409146138, "longitude": -746188906}' 127.0.0.1:10000 routeguide.RouteGuide.GetFeature

    ~/code/github/grpc-go/examples/route_guide/client$ grpcurl -proto ../routeguide/route_guide.proto -plaintext -d '{"latitude": 409146138, "longitude": -746188906}' 127.0.0.1:10000 routeguide.RouteGuide.GetFeature { "name": "Berkshire Valley Management Area Trail, Jefferson, NJ, USA", "location": { "latitude": 409146138, "longitude": -746188906 } }

    参数说明:

    • -d: 请求的参数
    • -proto: 制定proto文件的路径
    • -plaintext: 使用不加密的方式调用gRPC的server