宝藏好物gRPCurl

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

gRPCurl简介


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特性


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


调用gRPC服务,包括流式服务

使用gRPC反射进行服务发现

列出并描述 gRPC服务

支持调用安全(TLS)或者不安全(plain-text)的gRPC服务

ASP.NET Core设置grpc反射


添加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<GreeterService>();
        if (env.IsDevelopment())
        {
            endpoints.MapGrpcReflectionService();
        }
    });
}


服务发现、服务调用


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


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窗口:


cb638a183716a5d53d5015a9b4c3583a.png


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


4a7ebd2fc83d8dcba687b9e2e9fe9623.jpg


就是这么神奇!


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


`grpcurl  -import-path ../protos   -proto  greet.proto -d {\"name\":\"World\"} localhost:5001 gree
相关文章
|
7月前
|
存储 前端开发 JavaScript
中秋佳节,万家团圆:中秋拼图小游戏。
前言:提前预祝各位开发者、各行各业的工作人员,中秋佳节!国庆节~身体健康,阖家欢乐!!! 在这个拼图游戏中,我们会展示一张月饼图片,然后将它分割成多个小方块。我们需要拖拽这些小方块,使它们重新排列,最
|
前端开发 JavaScript 算法
【七夕特别篇】七夕已至,让爱闪耀
【七夕特别篇】七夕已至,让爱闪耀
【七夕特别篇】七夕已至,让爱闪耀
|
前端开发 JavaScript UED
「CSS畅想」何以解忧,美食足矣,用技术给好友开发了一个零食盲盒小游戏
前端技术从业者与非技术好友互动,用技术给好友开发了一个零食盲盒小游戏
198 1
|
算法 程序员 Python
端午抗疫宣传公益小游戏-用Python为粽子宝宝戴口罩
由于新冠疫情影响,为避免户外威胁,我选择了居家以程序员的方式纪念这个端午。 虽然气温较高,疫情也得到了有效的控制,但为了他人和自身的身体健康,仍然需要在人流密集的公共场所佩戴好口罩😷。 由此,我以**为粽子宝宝戴口罩**😷为主题,花费4个小时(构思,素材收集,编码, 记录),制作了一个公益小游戏。科普防疫戴口罩。纪念这个端午!
165 0
端午抗疫宣传公益小游戏-用Python为粽子宝宝戴口罩
|
人工智能 算法 容灾
喜迎女神节 高颜值支付宝程序媛的硬核人生
桃之夭夭,灼灼其华,在疫情渐退的三月,我们迎来第110个“女神节”——“三八”国际妇女节。 
557 0
我被阿里云美女清宵的观后感给撩了
这是她看完药神之后的观后感,看到chanel的声明,就吸引我一直把它读完。 package main import ( "fmt" "math/rand" "sync" "time" ) var ( r = rand.
1553 0