RESTとJSON-RPC
JSON-RPCいいよねって話が一昨日の発表後に出たのでちょっと考えてみた。
説明不要だろうけど簡単にそれぞれの特徴を。ここではブラウザとサーバー間でのやりとりを前提とする。
REST
リソース毎にuriを切っておいて、HTTPのGET, POST, PUT, DELETEメソッドで操作を行なう。
例えば /user/1 というuriに対してGETしたらidが1のユーザ情報が得られる様にしておく。GET処理はべき等にする、などのルールもあるけど難しくない。
調べればいくらでも情報はある。
JSON-RPC
RPCはRemote Procedure Callの略。/rpc みたいなuriを一個用意する。リクエストボディをJSON文字列にして起動処理やパラメータをHTTP POSTメソッドで送信する。レスポンスもJSON文字列にする。
// リクエストボディの例
{
"method" : "getUser",
"params" : [{
"id" : "1"
}]
}
仕様を決めようみたいな動きはあったけど決まってない。
JSON-RPC over HTTP - JSON-RPC | Google グループ
http://groups.google.com/group/json-rpc/web/json-rpc-over-http
JSON-RPCのいい所
WebSocketで使える
というかWebSocket使ってると、REST何それ?、という感じに。
ややこしい事がやれる
複数レコード一括更新処理なんかはRESTで実装しにくい。JSON-RPCなら対象レコードのidと属性をJSONに全部入れてしまえばOK。
例としてExtJSに含まれるExt Direct*1というモジュールを使うと、一定時間内に発生したリクエストを一つのリクエストにまとめてサーバーに送信するという事もやってくれる。
なので
難しい事やりたいならRPCだし、そうでないなら好きな方を使えばいいんじゃないかな。
jQueryプラグインもあるし。
https://github.com/hagino3000/jquery-jsonrpc2.0