文章目錄
使用 Postman 來發送 gRPC request
過去在測試 gRPC 時大部份都是依賴 BloomRPC,畢竟 grpcurl 還是語法上還是沒辦法像 GUI 一樣直覺,只是今年要更新 BloomRPC 時發現已停止維護,雖然 BloomRPC 有提供替代選擇 awesome-grpc,但要重新評估工具可能耗日曠時,剛好之前查 Microsoft 官方文件:Test gRPC services with Postman or gRPCurl in ASP.NET Core 看到 Postman 現在也支援呼叫 gRPC service,既然是老朋友有一定的熟悉度就來試試吧
基本環境說明
- macOS Ventura 13.2
- .NET SDK 7.0.203
JetBrains Rider 2023.1
使用 gRPC service 預設專案範本,相關內容使用之前筆記內容範例 再探 gRPC 在 ASP.NET Core 7 的 JSON 轉碼功能、再探 gRPC 在 ASP.NET Core 7 的 JSON 轉碼功能 (Streaming)
NuGet packages
- Microsoft.AspNetCore.Grpc.JsonTranscoding 7.0.5
- Grpc.AspNetCore.Server.Reflection 2.52.0
Postman April 2023 (v10.13)
使用方式
要登入 Postman 後才能在 Workspace 下新增 gRPC Request
使用 proto
import .proto file
import 其他 proto 的路徑
路徑不正確會提示
將 proto 檔定義的 service 與 method 儲存為 API
這一步只是為了在 Postman 中便於管理 proto 中定義的 service 與 method
儲存完成後就可以透過 API 來列出 service 與 method
使用 reflection (我的環境無法使用)
調整 gRPC Service
- 新增 NuGet 套件:
Grpc.AspNetCore.Server.Reflection
reflection 設定 (修改 Programs.cs)
前
using NET7GrpcService.Services; var builder = WebApplication.CreateBuilder(args); // Additional configuration is required to successfully run gRPC on macOS. // For instructions on how to configure Kestrel and gRPC clients on macOS, visit https://go.microsoft.com/fwlink/?linkid=2099682 // Add services to the container. builder.Services.AddGrpc().AddJsonTranscoding(); var app = builder.Build(); // Configure the HTTP request pipeline. app.MapGrpcService<GreeterService>(); app.MapGrpcService<ExampleService>(); app.MapGet("/", () => "Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909"); app.Run();
後
using NET7GrpcService.Services; var builder = WebApplication.CreateBuilder(args); // Additional configuration is required to successfully run gRPC on macOS. // For instructions on how to configure Kestrel and gRPC clients on macOS, visit https://go.microsoft.com/fwlink/?linkid=2099682 // Add services to the container. builder.Services.AddGrpc().AddJsonTranscoding(); // 加上下面這行 builder.Services.AddGrpcReflection(); var app = builder.Build(); // Configure the HTTP request pipeline. app.MapGrpcService<GreeterService>(); app.MapGrpcService<ExampleService>(); // 加上下面四行 if (app.Environment.IsDevelopment()) { app.MapGrpcReflectionService(); } app.MapGet("/", () => "Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909"); app.Run();
- 新增 NuGet 套件:
Using server reflection
出現 unknown error
使用 grpcurl 則是正常
用法可以參考之前筆記 在 ASP.NET Core 上啟用 gRPC Reflection
心得
Postman UI 有加強過:四個 gRPC 方法都有不同圖示
雖然 Using server reflection 有 bug 不能使用,但整體使用體驗還不差
參考資訊
文章作者 Yowko Tsai
上次更新 2023-04-28
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。