前情提要
平常寫的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 | cd GRPC.Demo\GRPC.Demo.Server |
新增gRPC Request
Postman工具中,可以透過左上角new的方式,可以建立一個gRPC Request
首先要先輸入gRPC服務對應的網址,這邊要轉換成grpc://localhost:7222
切記筆者這邊使用的是
https的網址,Postman中Url旁邊鎖頭來切換是否要Enable或Disable TLS
Service Definition
這邊就是重頭戲了,gRPC服務號稱就是一個強型別的方式開發,就像筆者上一篇[DotnetCore]gRPC101: Greeting專案:Client篇,加入proto檔案,即可透過點的方式呼叫gRPC服務中的Method,Postman也不例外,透過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 | // minimal API |
1 | // minimal API |
完整程式碼
1 | // Program.cs |
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清單取得,是一個很方便的設計,這篇就到這了,下篇見。
參考
- https://learning.postman.com/docs/sending-requests/grpc/first-grpc-request/
- https://blog.yowko.com/aspdotnet-core-grpc-reflection/