JSON-RPC是一種基於JSON的跨語言遠程調用協議。有文本傳輸數據小,便於調試擴展的特色。json
JSON-RPC很是簡單,在請求時向服務器傳輸數據格式以下(基於JSON2.0)數組
{ "jsonrpc" : 2.0, "method" : "sayHello", "params" : ["Hello JSON-RPC"], "id" : 1 }
服務器返回的數據格式也爲JSON,其格式以下:服務器
{ "jsonrpc" : 2.0, "result" : "Hell JSON-RPC", "error" : null, "id" : 1 }
{ "code" : 1, "message" : "Nothing found", "data":null }
錯誤碼-32768到-32000做爲預約義錯誤的保留值,該範圍內的任何未定義代碼爲將來保留使用。併發
代碼 | 錯誤 | 含義 |
---|---|---|
-32700 | 解析錯誤 | 服務器接收到無效的JSON;服務器解析JSON文本發生錯誤。 |
-32600 | 無效的請求 | 發送的JSON不是一個有效的請求。 |
-32601 | 方法未找到 | 方法不存在或不可見。 |
-36602 | 無效的參數 | 無效的方法參數。 |
-36603 | 內部錯誤 | JSON-RPC內部錯誤。 |
-32000到-32099 | 服務器端錯誤 | 保留給具體實現服務器端錯誤。 |
客戶端能夠發送一個請求對象數組來進行批量調用。當全部的請求都響應完畢後,服務器應以一個數組做爲響應,每一個請求都應該對應一個請求對象。服務器能夠以任何寬度的並行性,以任意的順序,併發的批量處理一個RPC調用。客戶端能夠經過id將請求和響應進行匹配。.net
請求翻譯
{ "jsonrpc":"2.0", "method": "subtract", "params":[42, 23], "id": 1 }
響應調試
{ "jsonrpc":"2.0", "result": 19, "id": 1 }
請求code
{ "jsonrpc":"2.0", "method": "subtract", "params":{ "subtrahend": 23, "minuend": 42 }, "id": 3 }
響應對象
{ "jsonrpc":"2.0", "result": 19, "id": 3 }
(無id錯誤)
請求blog
{ "jsonrpc":"2.0", "method": 1, "params": "bar" }
響應
{ "jsonrpc": "2.0", "error":{ "code": -32600, "message": "Invalid Request" }, "id": null }