發送一個請求對象至服務端代表一個rpc調用, 一個請求對象包含下列成員:
**jsonrpc**
> 指定JSON-RPC協議版本的字符串,必須準確寫為“2.0”
**method**
> 包含所要調用方法名稱的字符串,以rpc開頭的方法名,用英文句號(U+002E or ASCII 46)連接的為預留給rpc內部的方法名及擴展名,且不能在其他地方使用。
**params**
> 調用方法所需要的結構化參數值,該成員參數可以被省略。
**id**
> 已建立客戶端的唯一標識id,值必須包含一個字符串、數值或NULL空值。如果不包含該成員則被認定為是一個通知。該值一般不為NULL [[1]](http://wiki.geekdream.com/Specification/json-rpc_2.0.html#id1),若為數值則不應該包含小數 [[2]](http://wiki.geekdream.com/Specification/json-rpc_2.0.html#id2)。
服務端必須回答相同的值如果包含在響應對象。 這個成員用來兩個對象之間的關聯上下文。
[1]?在請求對象中不建議使用NULL作為id值,因為該規范將使用空值認定為未知id的請求。另外,由于JSON-RPC 1.0 的通知使用了空值,這可能引起處理上的混淆。
[2]?使用小數是不確定性的,因為許多十進制小數不能精準的表達為二進制小數。
## 4.1 通知
沒有包含“id”成員的請求對象為通知, 作為通知的請求對象表明客戶端對相應的響應對象并不感興趣,本身也沒有響應對象需要返回給客戶端。服務端必須不回復一個通知,包含那些批量請求中的。
由于通知沒有返回的響應對象,所以通知不確定是否被定義。同樣,客戶端不會意識到任何錯誤(例如參數缺省,內部錯誤)。
## 4.2 參數結構
rpc調用如果存在參數則必須為基本類型或結構化類型的參數值,要么為索引數組,要么為關聯數組對象。
* 索引:參數必須為數組,并包含與服務端預期順序一致的參數值。
* 關聯名稱:參數必須為對象,并包含與服務端相匹配的參數成員名稱。沒有在預期中的成員名稱可能會引起錯誤。名稱必須完全匹配,包括方法的預期參數名以及大小寫。