宝藏好物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
相关文章
|
存储 前端开发 JavaScript
中秋佳节,万家团圆:中秋拼图小游戏。
前言:提前预祝各位开发者、各行各业的工作人员,中秋佳节!国庆节~身体健康,阖家欢乐!!! 在这个拼图游戏中,我们会展示一张月饼图片,然后将它分割成多个小方块。我们需要拖拽这些小方块,使它们重新排列,最
|
前端开发 JavaScript 算法
【七夕特别篇】七夕已至,让爱闪耀
【七夕特别篇】七夕已至,让爱闪耀
【七夕特别篇】七夕已至,让爱闪耀
|
前端开发 JavaScript UED
「CSS畅想」何以解忧,美食足矣,用技术给好友开发了一个零食盲盒小游戏
前端技术从业者与非技术好友互动,用技术给好友开发了一个零食盲盒小游戏
263 1
|
6月前
|
人工智能 达摩院 小程序
大咖与小白的日常:一键生成漫画风头像
AI作画火得一塌糊涂,但是好像常常画得很离谱?不如来试试阿里云视觉智能开放平台的人物动漫化API,一键生成一个属于自己的、独一无二的漫画风头像。
142 0
大咖与小白的日常:一键生成漫画风头像
|
架构师 测试技术 程序员
全攻略!!!告诉学弟学妹怎么入行游戏行业
有粉丝问我想要做游戏,怎么才能进入游戏行业呐?忆当年,已过十余载,当年大学毕业的时候有学姐进入珠海西山居做测试,当时觉得很高端,好想进去,可惜没有如意,当时觉得很遗憾,不过两年后我还是进入了游戏行业,只是为了弥补遗憾,为了不让和我有同样想法的同学有遗憾,今天聊一下具体入行攻略。
254 0
全攻略!!!告诉学弟学妹怎么入行游戏行业
技术同学看过来,免费送你“第二套房”,还送“精装修”!
将您的原创技术博文同步(复制)到云栖社区 ,给你的博客再安一个家;只要您的技术博客3个月内有更新,申请同步后,即可获得相应奖励:1.     原创博文>=100篇,价值约300元的纪念奖励;2.     原创博文>=60篇<100篇,价值约200元的纪念奖励;3.     原创博文>=30篇<60.
8135 0
|
人工智能
淘宝造物节,“奇市江湖”里那些脑洞大开的创意产品
无人超市“淘咖啡”是本届造物节最有科技感的展位,这里可以说是集黑科技于一身,人脸识别、动作跟踪、语音识别...应用仅有!
8760 0
学生时代的最后一个新年,请一定要做这五件事
再过一天就要过年了,虽说如今年味越来越淡了,但是毕竟还是一年一度家人团圆的日子,学生党可以说是新春大军里最轻松自在的一群人了,既不用担心春运买不到票,又不用担心七大姑八大姨催婚打探薪水,和长辈们吃个饭还能顺几个红包,何不快哉。
我被阿里云美女清宵的观后感给撩了
这是她看完药神之后的观后感,看到chanel的声明,就吸引我一直把它读完。 package main import ( "fmt" "math/rand" "sync" "time" ) var ( r = rand.
1598 0
下一篇
无影云桌面