gRPC (Google Remote Procedure Call) 是一個開源的高效能 RPC 框架,運行在 HTTP/2 之上。它由 Google 於 2015 年發布。REST API 通常在 HTTP/1.1 上使用 JSON(一種基於文字的格式)。相比之下,gRPC 使用 Protocol Buffers (Protobuf),一種二進位格式,來序列化資料。這導致了更小的負載和更快的處理,使 gRPC 非常適合微服務之間的低延遲通訊。核心概念#
1.
Protocol Buffers (Protobuf):用於定義 服務 API 和負載訊息的介面定義語言 (IDL)。
2.
HTTP/2 傳輸:啟用多工(透過單一連線進行多個請求)、標頭壓縮和伺服器推送。
3.
嚴格契約:.proto 檔案充當單一真實來源 (source of truth)。客戶端和伺服器程式碼都從此定義生成。
程式碼範例:.proto 契約#
4 種通訊模式#
1.
Unary RPC:客戶端發送單一請求並獲得單一回應。(類似於標準函式呼叫或 REST 請求)。
2.
伺服器串流 (Server Streaming):客戶端發送一個請求並接收一連串訊息。客戶端持續讀取直到沒有更多訊息。
3.
客戶端串流 (Client Streaming):客戶端將一連串訊息寫入伺服器。完成後,伺服器發送單一回應。
4.
雙向串流 (Bidirectional Streaming):雙方使用讀寫串流發送一連串訊息。這兩個串流獨立運作。
比較:gRPC vs. REST#
| 功能 | REST | gRPC |
|---|
| 協定 | HTTP/1.1 (通常) | HTTP/2 |
| 負載 | JSON / XML (文字) | Protobuf (二進位) |
| 契約 | 可選 (OpenAPI) | 必須 (.proto) |
| 串流 | 有限 (分塊傳輸) | 原生 (雙向) |
| 瀏覽器支援 | 通用 | 有限 (需要 gRPC-Web proxy) |
| 使用案例 | 公共 API, Web 客戶端 | 內部微服務, 行動應用程式 |
在 Apidog 中使用 gRPC#
Apidog 透過提供使用者友善的介面,簡化了測試二進位 gRPC 端點的複雜性。1. 建立 gRPC 專案#
選擇 New Project -> gRPC Project。Apidog 單獨處理 gRPC 以針對其特定生命週期進行最佳化。2. 匯入定義 (.proto)#
3.
Server Reflection:如果您的伺服器支援反射,輸入 URL,Apidog 將自動發現可用的服務。
3. 先調用方法#
Apidog 自動將您的 JSON 輸入轉換為 Protobuf 二進位。對於串流方法,Timeline View 是必不可少的。它顯示發送和接收訊息的確切順序,允許您即時除錯競爭條件或時序問題。關鍵收穫#
高效能:gRPC 使用 Protocol Buffers(二進位)和 HTTP/2 進行低延遲、高吞吐量通訊。
嚴格契約:.proto 檔案是真實來源,允許為客戶端和伺服器生成程式碼。
串流:原生支援伺服器、客戶端和雙向串流,使其非常適合即時資料來源。
Apidog 支援:Apidog 為您處理二進位編碼複雜性,讓您使用簡單的 JSON 輸入測試 gRPC。
Modified at 2025-12-29 09:35:19