使用 gRPCurl 调试.NET 5的gPRC服务
介绍
你用过 Curl
吗?这个工具允许你通过 http 来发送数据,现在有一个适用于gGRPC的工具,gRPCurl,在本文中,我将介绍如何下载安装这个工具,然后通过这个工具调试我们.NET 5上面的gGRC程序。
安装 gRPCurl
gRPCurl 基于GO语言开发,所以,你要安装GO环境,可以在这里下载, https://golang.org/doc/install,它的安装非常简单,您只需要运行安装程序就可以了!
安装完GO环境以后,还需要设置 Windows环境变量,然后使用管理员身份打开PowerShell,运行下边两个命令:
go get github.com/fullstorydev/grpcurl/...
go install github.com/fullstorydev/grpcurl/cmd/grpcurl
如果安装成功,则可以通过运行以下的命令进行测试:
grpcurl --help
你应该在PowerShell窗口中看到以下内容:
ASP.NET Core gRPC
为了使gRPCurl有效,它需要了解gRPC消息和端点定义,有两种方法:反射。我将向您展示如何使用反射,因为这是.NET中最简单的方法,为了能够使用Reflection,使用以下命令安装:
Install-Package Grpc.AspNetCore.Server.Reflection -Version 2.34.0
然后,使用 services.AddGrpcReflection()和 endpoints.MapGrpcReflectionService()方法为ASP.NET Core gRPC应用程序配置, 第一个启用gRPC的反射,第二个是通过反射向gRPCurl提供示例端点和消息信息的端点:
using CountryService.Web.Services;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace CountryService.Web
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc();
services.AddGrpcReflection();
services.AddSingleton<CountryManagementService>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<CountryGrpcService>();
endpoints.MapGrpcReflectionService();
});
}
}
}
使用 gRPCurl
通过运行以下命令列出所有可用的gRPC服务:
grpccurl localhost:5001 list
通过运行以下命令,列出指定gRPC服务的所有可用gRPC端点:
grpccurl localhost:5001 list YourgRPCServiceFullName
通过运行以下命令来调用一个获取列表的端点:
grpcurl localhost:5001 gRPCDemo.v1.CountryService/GetAll
通过运行一下命令,来获取一个元素,它需要传入JSON参数:
grpcurl localhost:5001 -d 'JSON字符串' gRPCDemo.v1.CountryService/Get
总结
这是gRPCurl的简单教程, gRPCurl具有很多功能,如果您想了解更多信息, 我建议你可以在这里找到更多的api,https://github.com/fullstorydev/grpcurl
原文作者: Anthony Giretti
原文链接:https://anthonygiretti.com/2021/01/13/grpc-asp-net-core-5-test-grpc-endpoints-with-grpcurl/
最后
欢迎扫码关注我们的公众号 【全球技术精选】,专注国外优秀博客的翻译和开源项目分享,也可以添加QQ群 897216102

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构