宝藏好物gRPCurl

全栈码农画像

共 2315字,需浏览 5分钟

 · 2021-11-24

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


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


浏览 11
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报