使用 Postman 來測試 gRPC

最近因為有大資料傳輸的需求,所以嘗試了許多手段來減少傳輸資料到客戶端的壓力,因此就看到 gRPC 這個技術,在說明這技術之前這一篇先針對其開發的一些方法來加以說明。

關於 gRPC

首先說明一下gRPC是幹甚麼用的,對於網路程式開發最常處理的就是資料的傳遞,而gRPC是資料傳遞的一種方式,這時不得不提到老牌的傳輸方式Http Api,所以這兩者之間有何差別呢。

Http Request

首先針對老牌的 Http Request 說明,這是網頁程式資料傳遞的基礎,在這協定中定義了要如何從客戶端發起請求向伺服器端取的資訊,由於這協定傳書的資料都是以明文的方式傳遞,所以資料的大小相對就比較大。雖然目前可以針對該傳遞的資料做 gzip 之類的壓縮後傳遞。
除了傳輸檔案大小問題,在將伺服器中的資料轉換成文本的序列化以及客戶端收到資料的反序列化來說都是效能上的考量。
最後一點是對於資料的是沒有規範的,原則上就是客戶端收到資訊後針對收到的資訊做自己解析並利用即可,所以後來才衍生出OpenApi這種說明 Api 的規格的規範。
綜合以上幾點才催使 gRPC 的誕生。

gRPC

gRPC 是 Google 發起的一個開源遠端程序呼叫系統,主要的目的就是透過 Protocol Buffers 的協定來將傳遞的資訊給序列話後壓縮傳遞到客戶端,待客戶端收到資訊後做解壓縮以及反序列化的動作。
因此透過 gRPC 客戶端提交的請求以及收到的回應不再是文本而是模型的實體。

用 .Net Core 寫一個 gRPC 伺服器

說了那麼多歷史沿革相關的內容後,接下來實際帶大家用一個簡單的例子用 .Net Core 做一個簡單的 gRPC 伺服器。首先使用以下指令產生專案資料即可。

dotnet new grpc -o gRpc

再來只要執行該專案即可。

如何使用 Postman 來測試 gRPC

建立伺服器後就是本文的重點,接下來跟大家介紹如何透過 Postman 來測試剛剛寫的 gRPC 伺服器。這部分的做法是參考 三種好用的 gRPC 測試工具 才發現 Postman 現在也支援 gRPC,所以接下來針對剛剛建立的 gRPC 伺服器來測試。

首先針對我們的 proto 文件把他加入到 Postman裡面,加入的方式首先選擇新增一份API文件如下圖所示

POSTMAN 新增一份API文件

接下來點擊 Create an API 後會進入以下輸入Api資料的畫面,在此畫面輸入Api的名稱以及版號後點擊 Create API

POSTMAN 輸入Api資料的畫面

點擊完 Create API 後會進入 API的描述頁面,此時點擊 Definition 會顯示預設的 proto 範本如下圖所示

POSTMAN API的描述頁面

當然這內容不是我們的 proto 資料,所以我們再把以下的 proto 資料輸入該處即可。

syntax = "proto3";

option csharp_namespace = "GrpcServiceServer";

package greet;

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply);
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings.
message HelloReply {
  string message = 1;
}

以上步驟我們完成了新的 proto 定義,接下來要產生一個 gRPC 的請求,首先點擊下圖的 New 按鍵

POSTMAN 新增請求的按鈕

按下了 New 之後會產生 以下 產生請求的對話框,這時選擇 gRPC 這個按鈕

POSTMAN 產生請求的對話框

點擊之後會出現新增請求的對話框,此時將 Url 填好,選擇 Method 以及請求參數後 點擊 Invoke 級可以發出 gRPC 的請求到 伺服器端。

POSTMAN 新增請求的對話框

這邊關於 Method 需要說明一下,當擊之後會先是選擇Api文件的對話框,如下所示

POSTMAN 選擇Api文件的對話框

選擇完文件之後才是選擇 Api 的 Method 的對話框,如下所示

POSTMAN 選擇Api Method的對話框

當完成以上的部分,也輸入了請求的參數後,點擊 Invoke 會看到以下的請求結果。

POSTMAN 請求結果

結論

透過這篇的介紹希望能讓大家對於 gRPC 有一個基礎的認識,再來可以在 .Net Core 上使用 gRPC 來開發,最後透過 Postman 來測試開發的 gRPC 伺服器。

參考資料

  1. gRPC Wiki
  2. gRPC 官網
  3. Protocol Buffers
  4. 超文本傳輸協定
  5. OpenApi
  6. Postman 官網
  7. 三種好用的 gRPC 測試工具

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *