码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用grpcui测试ASP.NET core gRPC服务


    grpcui类似Swagger UI,可以用来测试gRPC服务,使用起来特别简单。

    其原理是通过自动发现gRPC服务协议(当然前提是gRPC服务暴露了Protobuf协议),然后启动一个带界面的Web程序,用户就可以在网页中选择要调用的接口、填写参数,然后通过grpcui发起gRPC请求,最终把执行结果展示出来。

    废话先不说了,直接上图,看效果:

    img

    下边来看使用方法:

    这里以ASP.NET Core gRPC服务为例,对于其它语言开发的gRPC服务也完全没有问题,gRPC协议都是一样的,只不过顺手写了这个。

    1、添加gRPC服务反射

    首先你得创建一个ASP.NET Core gRPC服务,这个用Visual Studio或者VS Code都可以。

    服务要暴露ProtoBuf协议,需要添加反射,反射是通过Grpc.AspNetCore.Server.Reflection这个包来支持的,大家按照自己喜欢的方式自行安装就好了。

    代码比较简单,请直接观看:

    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(); // 划重点!!!
            }
        });
    }
    

    重点是代码中的这两句:

    services.AddGrpcReflection();

    endpoints.MapGrpcReflectionService();

    注意:

    • 为了安全,应该仅在开发环境启用。否则被别人嗅探了协议,就不太好了。
    • 其实gRPCui还支持通过proto文件获取协议的方式,不过使用反射更加轻松一些。

    添加完这两句就可以启动服务了。

    2、启动grpcui

    这个工具只有一个exe文件,在Github上开源,直接下载就好了:

    Release v1.2.0 · fullstorydev/grpcui (github.com)

    然后在命令行启动:grpcui -plaintext 127.0.0.1:5002

    成功启动后,会在浏览器打开上文中的Web页面,就可以愉快的测试了。

    img

    注意:

    • 这里没有使用https,服务监听的是 http://0.0.0.0:5002,所以这里加了个参数 -plaintext。如果是https,不需要添加这个参数。
    • grpcui还有很多参数,你可以通过命令 gRPCui -help 来获取。

    这个工具面向所有gRPC服务,如果你使用别的技术栈,也是完全可以的。

    以上就是本文主要内容了,如有错漏欢迎指正。

    参考文章:https://docs.microsoft.com/zh-cn/aspnet/core/grpc/test-tools?view=aspnetcore-6.0

    收获更多架构知识,请关注微信公众号 萤火架构。原创内容,转载请注明出处。
    扫描二维码关注公众号

  • 相关阅读:
    基于Java毕业设计影城票务管理系统源码+系统+mysql+lw文档+部署软件
    牛客刷题<十>使用函数实现数据大小端转换
    小波神经网络的基本原理,小波神经网络功能分析
    博文增加商业化内容广告卡片,征求反馈
    【ICPC2022济南站】【树形dp】【删物品背包dp】C.DFS Order 2
    OSEP 考试总结
    使用argparse进行调参
    基于Java毕业设计中药分类管理系统源码+系统+mysql+lw文档+部署软件
    VSCODE中F12无法跳转,快捷键设置F12和insert混淆了
    P2558 [AHOI2002] 网络传输提交,位运算,高精度
  • 原文地址:https://www.cnblogs.com/bossma/p/15898849.html
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号