JSON-RPC 2.0 是一個輕量級的遠程程序呼叫 (RPC) 協議,使用 JSON 格式作為訊息交換格式。它支持單向呼叫、通知、批次請求及回應,並提供錯誤處理機制。JSON-RPC 2.0 並不限制實作細節,這讓它可以廣泛應用於不同的應用場景。
每個 JSON-RPC 訊息包含以下基本元素:
jsonrpc
"2.0"
。method
params
id
null
JSON-RPC 2.0 支援三種主要訊息類型:Request、Response 和 Error。
請求訊息由客戶端發出,要求伺服器執行某個方法。請求訊息必須包含 jsonrpc
、method
、params
和 id
。
範例:
method
: 要呼叫的方法名稱,如 subtract
。params
: 呼叫方法所需的引數,這裡是 [42, 23]
。id
: 請求的唯一標識符,這裡是 1
。回應訊息由伺服器回傳,表示方法執行的結果。回應訊息包含 jsonrpc
、result
和 id
。
範例:
result
: 方法執行的結果,這裡是 19
。id
: 用來對應請求訊息的 ID。錯誤訊息由伺服器回傳,表示方法執行過程中出現了錯誤。錯誤訊息包含 jsonrpc
、error
和 id
。
範例:
error
: 錯誤訊息,包含錯誤代碼 code
和錯誤描述 message
。
code
: -32602
表示參數無效。message
: 錯誤的簡短描述,這裡是 "Invalid params"
。id
: 用來對應請求訊息的 ID。當方法執行失敗時,錯誤訊息需要包含以下字段:
code
message
data
(可選)通知是 JSON-RPC 2.0 的一種特殊請求形式,它不需要 id
欄位。這表示客戶端發送請求但不期望回應。
範例:
JSON-RPC 2.0 允許在一個 HTTP 請求中包含多個 JSON-RPC 請求。這被稱為批次請求。每個請求都會有自己的 jsonrpc
、method
、params
和 id
。伺服器會對每個請求返回獨立的回應。
範例:
回應:
JSON-RPC 2.0 定義了一些標準的錯誤代碼,這些代碼有助於識別不同類型的錯誤。以下是一些常見的錯誤代碼:
-32600
: 無效的請求-32601
: 方法未找到-32602
: 無效的參數-32603
: 內部錯誤-32700
: 解析錯誤JSON-RPC 2.0 是一個靈活且強大的 RPC 協議,廣泛應用於各種分布式系統中。它具有簡單、清晰的結構,可以輕鬆地進行擴展和調整以符合不同的需求。