More than 1 year has passed since last update.

基本的な動き

  • リクエスト

下記のような形式で実行します。実行するときは必ず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
}

参考

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.