Try   HackMD

JSON-RPC vs gRPC vs REST 技術比較表

比較三種常見的 API 通訊技術:JSON-RPCgRPCREST,涵蓋傳輸格式、效能、擴充性、適用場景等面向。

📊 技術特性比較

特性 / 技術 JSON-RPC gRPC REST
🔧 傳輸協定 通常使用 HTTP/HTTPS(POST) HTTP/2(可支援 HTTP/1.1 降級) HTTP/HTTPS(GET/POST/PUT/DELETE)
📦 資料格式 JSON Protocol Buffers(Protobuf) JSON(可選 XML、YAML 等)
🧠 介面定義方式 無固定格式,靠慣例(如 method, params 需定義 .proto 檔案 自由定義 URL + HTTP 動詞 + DTO
🛠️ 工具支援度 中等,手動較多 高,自動生成 Client/Server stub 高,原生支援於各大 Web 框架
📈 效能 中等 高(快、低延遲) 中等偏低(人類可讀)
📚 可讀性 高(JSON 格式) 低(binary 格式) 高(REST URL + JSON)
🔁 雙向通訊 / 推播 不原生支援 支援 bidirectional streaming 不原生支援(需 WebSocket 等實作)
🌎 語言支援 廣泛(JSON 是標準格式) 非常廣泛(官方支援多種語言) 廣泛(HTTP/JSON 為萬國通用)
🔌 第三方整合 中等,需設計統一格式 較弱(需 client 生成碼) 最佳(最適合公開 API)
🧩 結構自由度 高(可定義自有 method/action 格式) 中(需配合 proto 規格) 高(依 URL 與資源設計)

✅ 適用場景建議

情境/需求 建議技術 理由
自訂 RPC 框架、物件導向參數傳遞 JSON-RPC 結構自由、易整合自有系統如 ERP
高效能、微服務內部 RPC 通訊 gRPC 高速、內部通訊最佳選擇
開放給第三方、前端或行動裝置使用 REST 簡單通用、無需額外工具
需要串流(如影像、IoT、大量即時資料) gRPC 支援雙向/單向 Streaming
想省開發時間、快速上手 REST / JSON-RPC JSON 可讀性高,易除錯