前情提要
平常寫的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/