如何配置Postman或BloomRPC访问带子目录路径的gRPC服务
解决Postman/BloomRPC访问带子目录前缀的gRPC服务问题
你的gRPC服务在生产环境绑定了子目录前缀/sms-async.SendMessage,代码中通过SubdirectoryHandler自动给请求添加该前缀实现访问,但Postman和BloomRPC默认不会处理这类自定义路径前缀,需要手动配置路径映射,具体步骤如下:
Postman配置方式
方式一:拆分路径与方法名
- 新建gRPC请求,在Server URL中填写:
https://dev.tech - 在Method name字段中,拼接子目录前缀与proto定义的完整方法名,格式为:
/sms-async.SendMessage/{proto中的完整方法标识}
例如若proto中方法为SendMessage/SendSms,则填写/sms-async.SendMessage/SendMessage/SendSms - 加载对应.proto文件,填写请求参数后发送请求即可
方式二:整合前缀到服务地址
- 在Server URL中直接填写带前缀的完整地址:
https://dev.tech/sms-async.SendMessage - Method name仅填写proto中定义的完整方法标识(如
SendMessage/SendSms) - 加载.proto文件并填写参数后发送
BloomRPC配置方式
- 打开BloomRPC并加载你的gRPC.proto文件
- 在顶部的Address输入框中,填写带前缀的完整服务地址:
https://dev.tech/sms-async.SendMessage - 在左侧选择对应的服务和方法,填写请求参数后点击发送按钮即可
你的gRPC服务器配置代码
builder.WebHost.ConfigureKestrel(serverOptions => { serverOptions.ListenAnyIP(80, listenOptions => listenOptions.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1AndHttp2); serverOptions.ListenAnyIP(5000, listenOptions => listenOptions.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http2); }); builder.Services.AddGrpc(); app.MapGrpcService<SMSServiceGrpcService>();
可用的客户端访问代码
var handler = new SubdirectoryHandler(new HttpClientHandler(), "/sms-async.SendMessage"); var httpClient = new HttpClient(handler); var channel = GrpcChannel.ForAddress("https://dev.tech", new GrpcChannelOptions { HttpClient = httpClient }); var client = new SendMessage.SendMessageClient(channel); var request = new SendSmsRequest { Id = Guid.NewGuid().ToString(), PhoneNumber = "+8934834", Provider = (Provider)1, Process = "exampleProcess", SmsText = "Hello from gRPC!" }; var response = await client.SendSmsAsync(request);
内容的提问来源于stack exchange,提问作者Oleg Pro
相关产品推荐
相关产品推荐

