基本的な動き
- リクエスト
下記のような形式で実行します。実行するときは必ずPOSTになるみたいです。
要求
{
"jsonrpc": "2.0", // 固定で設定する
"method": "login", // 実行するメソッド名を記載
"params": // Postパラメータを設定
{
"user_id": "wanwan"
"password": "nyannyan"
},
"id": 3 // 実行に対する番号
}
- レスポンス
下記みたいな感じになります。つまり、ID:3でAPIを実行したら、それはID:3で帰ってくるというようなもののようです。
応答
{
"jsonrpc": "2.0", // 固定
"result": { // レスポンス
"name" : "犬のおまわりさん",
"message" : "困ってしまってニャンニャンニャニャン"
},
"id": 3 // 実行に対する番号
}
エラーのときは下記のような感じになります。
エラー応答
{
"jsonrpc": "2.0", // 固定
"error": { // エラーのレスポンス
"code": -32601, // エラーコード
"message": "Method not found" // メッセージ
},
"id": "3" // 実行に対する番号
}
エラーコード
HTTPステータスは200となるようです。
コード | メッセージ | 内容 |
---|---|---|
-32700 | Parse error | Jsonの解析エラー |
-32600 | Invalid Request | 送られた内容がJSONRPC形式ではない |
-32601 | Method not found | メソッドがない、メソッド名が間違ってる |
-32602 | Invalid params | パラメーターが間違ってる |
-32603 | Internal error | 何か例外が発生した |
特別な機能
Batch
Batchというのは、下記のような形でまとめてAPIを実行してまとめて、レスポンスを返してもらうことができる機能です。
まとめて実行してもIDがあるから、判別可能です。
- リクエスト
バッチ要求
[
{
"jsonrpc": "2.0",
"method": "hello",
"params": {
"user_id" : "wanwan",
"word" : "こんにちわ"
},
"id": "1"
},
{
"jsonrpc": "2.0",
"method": "bye",
"params": [
"user_id" : "booboo",
"word" : "バイバイ"
],
"id": "2"
}
]
- レスポンス
バッチ応答
[
{
"jsonrpc": "2.0",
"result": {
"user_id" : "dondon",
"message" : "わんわんわん"
},
"id": "1"
},
{
"jsonrpc": "2.0",
"result": {
"user_id" : "googoo",
"message" : "ブーブー"
},
"id": "2"
}
]
Notification
パラメータにidを設定しない場合、Notificationになります。
Notificationで実行すると、レスポンスを返さないようになります。
こんなもの何に使うのかと思ったのですが、updateとかだと要らないのかもしれないです。
エラーのときは帰ってきます。
- リクエスト
通知要求
{
"jsonrpc": "2.0",
"method": " update",
"params":
{
"user_id": "wanwan" ,
"mail": "nyannyan@gmail.com"
}
}
- レスポンス(エラーの時)
通知応答
{
"jsonrpc": "2.0",
"error": {
"code": -32603,
"message": "Internal error"
},
"id": null
}