前情提要
平常寫的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
![[New gRPC Request]](/2023/02/10/dotnet-series-grpc101-postman-request/Untitled.png)
首先要先輸入gRPC
服務對應的網址,這邊要轉換成grpc://localhost:7222
切記筆者這邊使用的是
https
的網址,Postman
中Url
旁邊鎖頭來切換是否要Enable或Disable TLS
![[Enter gRPC Url]](/2023/02/10/dotnet-series-grpc101-postman-request/Untitled1.png)
Service Definition
這邊就是重頭戲了,gRPC
服務號稱就是一個強型別的方式開發,就像筆者上一篇[DotnetCore]gRPC101: Greeting專案:Client篇,加入proto
檔案,即可透過點的方式呼叫gRPC
服務中的Method
,Postman
也不例外,透過Service Definition
頁籤的設定,是可以直接用選取方式選擇我們要呼叫的方法,由筆者來一一說明吧。
Proto檔案匯入
這是跟開發Client
端程式一樣,只要匯入proto
檔案,就會出現該gRPC
服務對應的Method
列表,首先要先透過Import .proto file
的功能選擇其對應的proto檔案
![[Import .proto File]](/2023/02/10/dotnet-series-grpc101-postman-request/Untitled2.png)
接著按下Choose a file
![[Choose .proto File]](/2023/02/10/dotnet-series-grpc101-postman-request/Untitled3.png)
接著Choose a file
的按鈕變成loading
狀態,並跳出File Explorer
,可以選擇其proto
檔案
![[Choose .proto File:File Exploreer]](/2023/02/10/dotnet-series-grpc101-postman-request/Untitled4.png)
接著勇敢地按下Next
鍵吧
![[Choose .proto File:Next button]](/2023/02/10/dotnet-series-grpc101-postman-request/Untitled5.png)
接著按下Import As API
![[Choose .proto File:Import As API button]](/2023/02/10/dotnet-series-grpc101-postman-request/Untitled6.png)
最後會在Method
下拉是選單中看見SayHello
這個方法
![[Choose .proto File:Method List]](/2023/02/10/dotnet-series-grpc101-postman-request/Untitled7.png)
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
,就無需要再按一次,除非方法有更新
![[Server Reflection button]](/2023/02/10/dotnet-series-grpc101-postman-request/Untitled8.png)
![[Server Reflection:Method List]](/2023/02/10/dotnet-series-grpc101-postman-request/Untitled9.png)
輸入Message
輸入Request Model
吧,可以切到Message
這個頁籤,Request Body
部份,可以直接自己輸入,也可以透過Generate Example Message
來產生一個範例Message
![[Enter Message by Generate Example Message]](/2023/02/10/dotnet-series-grpc101-postman-request/Untitled10.png)
Invoke看結果
筆者就把輸入的Message
改成Eugene Su
後按下Invoke
按鈕,Respone
會出現於Respone
回應顯示窗中
![[Invoke]](/2023/02/10/dotnet-series-grpc101-postman-request/Untitled11.png)
結論
藉由這篇來了解如何透過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/