宝藏好物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
相关文章
|
移动开发
阿云漫画 | 一片绿叶,让冬奥火炬“飞扬”
编者按: 冬奥会倒计时开始了!设计团队曾为如何呈现火炬“飞扬”的最佳形态犯难,直到看到一片线条灵动轻盈的树叶,大家的灵感被点燃,参考“大自然造就的曲线张力和美感”,团队调整了120多版模型,不断打磨细节,终于让火炬“活”了起来。
127 0
|
前端开发 JavaScript 算法
【七夕特别篇】七夕已至,让爱闪耀
【七夕特别篇】七夕已至,让爱闪耀
【七夕特别篇】七夕已至,让爱闪耀
|
6月前
|
人工智能 达摩院 小程序
大咖与小白的日常:一键生成漫画风头像
AI作画火得一塌糊涂,但是好像常常画得很离谱?不如来试试阿里云视觉智能开放平台的人物动漫化API,一键生成一个属于自己的、独一无二的漫画风头像。
141 0
大咖与小白的日常:一键生成漫画风头像
|
算法 程序员 Python
端午抗疫宣传公益小游戏-用Python为粽子宝宝戴口罩
由于新冠疫情影响,为避免户外威胁,我选择了居家以程序员的方式纪念这个端午。 虽然气温较高,疫情也得到了有效的控制,但为了他人和自身的身体健康,仍然需要在人流密集的公共场所佩戴好口罩😷。 由此,我以**为粽子宝宝戴口罩**😷为主题,花费4个小时(构思,素材收集,编码, 记录),制作了一个公益小游戏。科普防疫戴口罩。纪念这个端午!
194 0
端午抗疫宣传公益小游戏-用Python为粽子宝宝戴口罩
|
安全 API 开发者
赫斯特初试“时尚”黑客马拉松
赫斯特(Hearst)举办了它的第一次“时尚开发”, 设计师和开发者们组成小队,参加为期 24 小时的竞赛。这次时尚界和科技界的交汇吸引了 150 多名开发者来到纽约市, 他们将会使用赫斯特品牌的 API 去创建新颖时尚的应用程序。
116 0
|
人工智能
淘宝造物节,“奇市江湖”里那些脑洞大开的创意产品
无人超市“淘咖啡”是本届造物节最有科技感的展位,这里可以说是集黑科技于一身,人脸识别、动作跟踪、语音识别...应用仅有!
8756 0
学生时代的最后一个新年,请一定要做这五件事
再过一天就要过年了,虽说如今年味越来越淡了,但是毕竟还是一年一度家人团圆的日子,学生党可以说是新春大军里最轻松自在的一群人了,既不用担心春运买不到票,又不用担心七大姑八大姨催婚打探薪水,和长辈们吃个饭还能顺几个红包,何不快哉。
我被阿里云美女清宵的观后感给撩了
这是她看完药神之后的观后感,看到chanel的声明,就吸引我一直把它读完。 package main import ( "fmt" "math/rand" "sync" "time" ) var ( r = rand.
1595 0