宝藏好物gRPCurl

共 2315字,需浏览 5分钟

 ·

2021-11-24 18:23

gRPCurl简介

2ab676f0cd2c7e6a8e1c79870a9f18bd.webp

gRPCurl[1]是一个与gRPC服务器交互的命令行工具,可认为是gRPC的curl工具。

gRPCurl用于从命令行调用gRPC服务器支持的RPC方法,gRPC使用二进制编码(protobuf), 不能利用常规的curl工具(早期的curl版本还不支持HTTP/2)。

1. gRPCurl工具接受json编码的消息(对人类和脚本更友好), 工具底层会转化为protobuf与服务器交互。2.gRPCurl 必须了解服务的Protobuf协议(服务的schema),才能调用它们,     gRPCurl通过三种方式之一实现此目的

 gRPC服务器添加gRPC反射 直接读取proto源文件 加载编译后的protoset文件  (包含已被编码的proto描述文件)


gRPCurl特性

2ab676f0cd2c7e6a8e1c79870a9f18bd.webp


gRPCurl是由gRPC社区创建的命令行工具,功能包括:

调用gRPC服务,包括流式服务使用gRPC反射进行服务发现列出并描述 gRPC服务支持调用安全(TLS)或者不安全(plain-text)的gRPC服务



ASP.NET Core设置grpc反射

2ab676f0cd2c7e6a8e1c79870a9f18bd.webp


添加Grpc.AspNetCore.Server.Reflection包引用Startup.cs注册反射

public void ConfigureServices(IServiceCollection services)
{
    services.AddGrpc();
    services.AddGrpcReflection();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseRouting();
    
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapGrpcService();

        if (env.IsDevelopment())
        {
            endpoints.MapGrpcReflectionService();
        }
    });
}


服务发现、服务调用

2ab676f0cd2c7e6a8e1c79870a9f18bd.webp


grpcurl list/describe 可以列出gRPC服务端反射的protobuf

1. grpcurl localhost:5001 list

greet.Greeter
grpc.reflection.v1alpha.ServerReflection



2. grpcurl localhost:5001 describe

greet.Greeter is a service:
service Greeter {
  rpc SayHello ( .greet.HelloRequest ) returns ( .greet.HelloReply );
}
grpc.reflection.v1alpha.ServerReflection is a service:
service ServerReflection {
  rpc ServerReflectionInfo ( stream .grpc.reflection.v1alpha.ServerReflectionRequest ) returns ( stream .grpc.reflection.v1alpha.ServerReflectionResponse );
}

 grpc -d ( Data for request contents) 传参调用gRPC方法

3. grpcurl -d {"name":"World"} localhost:5001 greet.Greeter/SayHello

{"message":"Hello World"}


gRPCui

2ab676f0cd2c7e6a8e1c79870a9f18bd.webp

gRPCui[2] 是 gRPC 的交互式 Web UI,基于gRPCurl,并提供一个GUI来发现和测试 gRPC 服务,类似于 Postman 或 Swagger UI 等 HTTP 工具。

安装:go install github.com/fullstorydev/grpcui/cmd/grpcui@latest使用:grpcui localhost:5001

会立刻打开类Swagger窗口:

99983dddca4a5745b0a9891e312bcf25.webp

输入Request Header、Request Data,自行倒腾。

ad1d77cd106679b2e6bc1289bdc737c3.webp

就是这么神奇!

以上是利用gRPC服务反射获取protobuf的方式,gRPCurl还支持直接读取proto文件。

`grpcurl  -import-path ../protos   -proto  greet.proto -d {\"name\":\"World\"} localhost:5001 greet.Greeter/SayHello`

引用链接

[1] grpcur: https://github.com/fullstorydev/grpcurl
[2] gRPCui: https://github.com/fullstorydev/grpcui#installation


性感豹纹


81130698db561edb7ef103d5ac88411a.webp HTTP1.1 Keep-Alive到底算不算长连接?

81130698db561edb7ef103d5ac88411a.webp Hostonly cookie是什么鬼?

81130698db561edb7ef103d5ac88411a.webp 前端镜像打包这么慢,你该反省一下dockerfile的姿势了

81130698db561edb7ef103d5ac88411a.webp

 SignalR 开发到生产部署闭坑指南

81130698db561edb7ef103d5ac88411a.webp

 难缠的布隆过滤器,这次终于通透了


3b520d8c9fc0bb83bfafc46fde8a7e4c.webp

点个在看你最好看

1338cc20707267c64e503d786d4e4162.webp


仅代表此刻认知,文章永久更新地址,请移步原文!!


浏览 34
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐