0%

[DotnetCore]gRPC101:Postman發出gRPC Request

前情提要

平常寫的Restful API的測試工具有百百種,筆者這邊所說的測試並非QA寫的那種測試,而是確認自己寫好的API是否如期執行,確認運作狀況,畢竟Restful API大多使用在前後端分離的開發方式中,身為後端工程師,寫完API,第一件事是打開Postman工具,輸入API Url,發出Request,看是否正常運行,更甚者,會製作Postman Collection並匯出給前端工程師使用,回到gRPC服務,是否也可以透過Postman來測試呢,跟著筆者一起看下去吧。

筆者這邊針對[DotnetCore]gRPC101: Gretting專案-Server篇中製作的gRPC Server為例,示範怎麼從Postman發出Request測試其運作狀況,先讓gRPC Server啟動起來吧。

1
2
3
cd GRPC.Demo\GRPC.Demo.Server
dotnet run --launch-profile https
# 啟動URL為https://localhost:7222

新增gRPC Request

Postman工具中,可以透過左上角new的方式,可以建立一個gRPC Request

首先要先輸入gRPC服務對應的網址,這邊要轉換成grpc://localhost:7222

切記筆者這邊使用的是https的網址,PostmanUrl旁邊鎖頭來切換是否要Enable或Disable TLS

Service Definition

這邊就是重頭戲了,gRPC服務號稱就是一個強型別的方式開發,就像筆者上一篇[DotnetCore]gRPC101: Greeting專案:Client篇,加入proto檔案,即可透過點的方式呼叫gRPC服務中的MethodPostman也不例外,透過Service Definition頁籤的設定,是可以直接用選取方式選擇我們要呼叫的方法,由筆者來一一說明吧。

Proto檔案匯入

這是跟開發Client端程式一樣,只要匯入proto檔案,就會出現該gRPC服務對應的Method列表,首先要先透過Import .proto file的功能選擇其對應的proto檔案

接著按下Choose a file

接著Choose a file的按鈕變成loading狀態,並跳出File Explorer,可以選擇其proto檔案

接著勇敢地按下Next鍵吧

接著按下Import As API

最後會在Method下拉是選單中看見SayHello這個方法

Server Reflection

針對這個Server Definition中的Server Reflection的選項則,必須在[DotnetCore]gRPC101: Gretting專案-Server篇中的程式要做一點手腳,即增加Server Reflection的設定

  • 安裝Nuget套件:Grpc.AspNetCore.Server.Reflection
1
dotnet add package Grpc.AspNetCore.Server.Reflection
  • 改造Program.cs
1
2
3
4
5
// minimal API
// 以上省略
builder.Services.AddGrpc();
builder.Services.AddGrpcReflection(); // 新增加的:註冊Server Reflection
// 以下省略
1
2
3
4
5
// minimal API
// 以上省略
app.MapGrpcService<GretterService>();
app.MapGrpcReflectionService(); // 新增加的:啟用Server Reflection
// 以下省略

完整程式碼

1
2
3
4
5
6
7
8
9
10
11
12
// Program.cs
using GRPC.Demo.Server.Services;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddGrpc();
builder.Services.AddGrpcReflection();
var app = builder.Build();

app.MapGrpcService<GretterService>();
app.MapGrpcReflectionService();

app.Run();
  • Postman上透過Server Reflection取得Method清單

筆者這邊因為按過Use Server Reflection,為了截Use Server Reflection鈕,故意不選gRPC Url,正常來說要先設定gRPC Url後按下Use Server Reflection,只要按過一次Postman會記住,點選gRPC Url,就無需要再按一次,除非方法有更新

輸入Message

輸入Request Model吧,可以切到Message這個頁籤,Request Body部份,可以直接自己輸入,也可以透過Generate Example Message來產生一個範例Message

Invoke看結果

筆者就把輸入的Message改成Eugene Su後按下Invoke按鈕,Respone會出現於Respone回應顯示窗中

結論

藉由這篇來了解如何透過Postman來達成gRPC服務的運作狀況是否符合期待,就可以先驗證其Server端的程式是否正確,Server端也透過增加Server Reflection的設定,不用提供proto檔案,只需提供gRPC Url即可將Method清單取得,是一個很方便的設計,這篇就到這了,下篇見。

參考