zoukankan      html  css  js  c++  java
  • 宝藏好物gRPCurl

    宝物简介

    grpcur是一个与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是有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
    
    1. 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方法

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

    gRPCui

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

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

    会立刻打开类Swagger窗口:

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


    就是这么神奇!

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

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

    本文来自博客园,作者:{有态度的马甲},转载请注明原文链接:https://www.cnblogs.com/JulianHuang/p/15594268.html

    欢迎关注我的原创技术、职场公众号, 加好友谈天说地,一起进化
    上海鲜花港 - 郁金香
  • 相关阅读:
    bfs入门 (HDU
    Codeforces Round #570 (Div. 3)B
    nyoj 277-车牌号 (map, pair, iterator)
    nyoj 276-比较字母大小 (顺序比较, 逆序输出)
    nyoj 275-队花的烦恼一 (stack, push, pop)
    nyoj 274-正三角形的外接圆面积 (R = PI * a * a / 3)
    nyoj 273-字母小游戏 (getline(cin, string))
    nyoj 268-荷兰国旗问题 (count)
    nyoj 266-字符串逆序输出 (isdigit(), geline(cin, my_string))
    nyoj 264-国王的魔镜 (string[-1:-int(str_len/2+1):-1])
  • 原文地址:https://www.cnblogs.com/JulianHuang/p/15594268.html
Copyright © 2011-2022 走看看