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(); if (env.IsDevelopment()) { endpoints.MapGrpcReflectionService(); // 划重点!!! } }); }
重点是代码中的这两句:
services.AddGrpcReflection();
endpoints.MapGrpcReflectionService();
注意:
- 为了安全,应该仅在开发环境启用。否则被别人嗅探了协议,就不太好了。
- 其实gRPCui还支持通过proto文件获取协议的方式,不过使用反射更加轻松一些。