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