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

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

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

下边来看使用方法:

这里以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页面,就可以愉快的测试了。

注意:

  • 这里没有使用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

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

使用grpcui测试gRPC服务的更多相关文章

  1. .NetCore|.Net6 gRPC服务开发及本地调试

    前言 最近在项目中实装应用了gRPC技术,本着能把技术描述出来给别人能看的懂的思想及作为自己学习笔记的心态编写了此文.因为在实际项目中是webApi接口和gRPC接口使用在同一项目服务中,所以本文的例 ...

  2. ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)

    早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把.同时记录体验的过程.如果你也想按照本文的步骤体验的话,那你得先安 ...

  3. 如何在 Knative 中部署 WebSocket 和 gRPC 服务?

    作者 | 冬岛  阿里云容器平台工程师 导读:虽然说 Knative 默认就支持 WebSocket 和 gRPC,但在使用中会发现,有时想要把自己的 WebSocket 或 gRPC 部署到 Kna ...

  4. 使用 grpcurl 通过命令行访问 gRPC 服务

    原文链接: 使用 grpcurl 通过命令行访问 gRPC 服务 一般情况下测试 gRPC 服务,都是通过客户端来直接请求服务端.如果客户端还没准备好的话,也可以使用 BloomRPC 这样的 GUI ...

  5. 【.NET6】gRPC服务端和客户端开发案例,以及minimal API服务、gRPC服务和传统webapi服务的访问效率大对决

    前言:随着.Net6的发布,Minimal API成了当下受人追捧的角儿.而这之前,程序之间通信效率的王者也许可以算得上是gRPC了.那么以下咱们先通过开发一个gRPC服务的教程,然后顺势而为,再接着 ...

  6. gRPC初探——概念介绍以及如何构建一个简单的gRPC服务

    目录 引言 1. gRPC简介 2. 使用Protocol Buffers进行服务定义 2.1 定义消息 2.2 定义服务接口 3.构建简单的gRPC服务 3.1 编写proto文件,定义消息和接口 ...

  7. 一个新实验:使用gRPC-Web从浏览器调用.NET gRPC服务

    今天给大家翻译一篇由ASP.NET首席开发工程师James Newton-King前几天发表的一篇博客,文中带来了一个实验性的产品gRPC-Web.大家可以点击文末的讨论帖进行相关反馈.我会在文章末尾 ...

  8. 使用gRPC-Web从浏览器调用.NET gRPC服务

    我很高兴宣布通过.NET对gRPC-Web进行实验性支持.gRPC-Web允许从基于浏览器的应用程序(例如JavaScript SPA或Blazor WebAssembly应用程序)调用gRPC. . ...

  9. 流量染色与gRPC服务托管 微服务协作开发、灰度发布之流量染色 灰度发布与流量染色

    大规模微服务场景下灰度发布与流量染色实践 https://mp.weixin.qq.com/s/UBoRKt3l91ffPagtjExmYw [go-micro]微服务协作开发.灰度发布之流量染色 - ...

随机推荐

  1. SQLAlchemy(十)

    ORM操作在实际项目中的应用非常多,涉及到的框架也是根据不同的项目有不同的处理模块,不过操作流程和步骤都是大同小异基本没有什么太大变化,唯一需要注意的就是在实际操作过程中你要使用的ORM框架的处理性能 ...

  2. Flask_获取请求信息(三)

    引用request的方法: from flask import request 与Django不同的是,flask是不需要将request对象作为第一个参数传入视图函数,他的request对象是来自于 ...

  3. spring cloud bus 消息总线 动态刷新配置文件 【actuator 与 RabbitMQ配合完成】

    1.前言 单机刷新配置文件,使用actuator就足够了 ,但是 分布式微服务 不可能是单机 ,将会有很多很多的工程 ,无法手动一个一个的发送刷新请求, 因此引入了消息中间件 ,常用的 消息中间件 是 ...

  4. 微服务架构攀登之路(五)之Go-micro入门

    一.go-micro入门 1. go-micro 简介 Go Micro 是一个插件化的基础框架,基于此可以构建微服务,Micro 的设计哲学是可插拔的插件化架构 在架构之外,它默认实现了 consu ...

  5. 基于CentOS6.5-Hadoop2.7.3-hive-2.1.1安装sqoop1.4.7

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6627736198431375879/ 系统版本,Hadoop已安装完成.链接<CentOS6.5下安装Had ...

  6. Kube-OVN 1.2.0发布,携手社区成员打造高性能容器网络

    Kube-OVN 1.2.0 新版本如期而至,支持 Vlan 和 OVS-DPDK 两种类型的高性能网络接口.本次发布得益于社区的壮大,感谢Intel爱尔兰开发团队与锐捷网络开发团队持续积极参与Kub ...

  7. go包管理速通,一篇文章就够了,再也不用担心因为不会导包被辞退

    前言 最近在看一些go语言相关的书,发现了一个有意思的事情:其中一本书最新印刷的版本是2017年3月,而golang包管理的后起之秀go module伴随go1.11于2018年8月诞生--因此,书里 ...

  8. Linuxqq shell脚本安装后的卸载

    官方下载和帮助页面: 传送门 linuxqq_2.0.0-b1 的时候,并没有发布 MIPS64 的 DEB 包,只能用 .sh 安装,需要手动删除卸载.愚人节发布的 beta2 新增了 MIPS64 ...

  9. linux软件安装命令

    rpm命令安装 安装 rpm -ivh 包全名(如果当前目录不是软件包所在目录,就需要加绝对路径) -i 安装 -v 显示详细信息 -h 显示进度 升级 rpm -Uvh 包全名 -U 升级 卸载 r ...

  10. gin中自定义中间件

    package main import ( "github.com/gin-gonic/gin" "log" "time" ) func L ...