はじめに
前回はRuby on RailsのScaffold機能で作ったテーブルに対してデータのCRUD(作成・読み出し・更新・削除)ができるWebアプリを作りました。今回は下の画面のようなCurlを使ったリッチクライアント版のCRUDアプリを作成してみましょう。
また、先日Curl Ver.7がリリースされたましたので今回からVer.7を使います。実行環境(RTE)、IDEをダウンロード・インストールしてください。
前回の記事
Ruby on Rails とリッチクライアントのインターフェース
前回のScaffoldの生成したコードの説明でも少し触れたように、Ruby on Railsはたいへんリッチクライアントと相性の良い設計になっています。
データフォーマット
Ruby on Railsは通常のHTML以外にXMLフォーマットのデータを出力できます。またXMLだけではなく、以下のように1行コードを追加するだけでJSONフォーマットのデータも簡単に出力できます。
def index @players = Player.all respond_to do |format| format.html # index.html.erb format.xml { render :xml => @players } format.json { render :json => @players } # ← この行を追加 end end
さらに出力だけなくデータの受け取りも、通常使われるapplication/x-www-form-urlencodedやmultipart/form-dataだけでなく、XML、JSONフォーマットのデータもプログラムを変更する事なく使用できます。
REST
Ruby on RailsのコントローラーはREST(Representational State Transfer)原則に従っています。RESTではテーブル等のリソースをURLで一意に指定し、そのデータをHTTPメッソドのPOST、GET、 PUT、DELETEを使って、作成/読み出し/更新/削除できるなっています。
URL | メソッド | 操作 |
---|---|---|
http://localhost:3000/players | GET | playesテーブルの一覧 |
http://localhost:3000/players/123 | GET | id=123データの読み出し |
http://localhost:3000/players | POST | 新規データの作成 |
http://localhost:3000/players/123 | PUT | id=123データの更新 |
http://localhost:3000/players/123 | DELETE | id=123データの削除 |
また、JSONフォーマットで情報を操作する場合は次のようなURLになります。
URL | メソッド | 操作 |
---|---|---|
http://localhost:3000/players.json | GET | playesテーブルの一覧 |
http://localhost:3000/players/123.json | GET | id=123データの読み出し |
http://localhost:3000/players.json | POST | 新規データの作成 |
http://localhost:3000/players/123.json | PUT | id=123データの更新 |
http://localhost:3000/players/123.json | DELETE | id=123データの削除 |
このようなシンプルな考え方により、リッチクライアント側からのサーバーアクセスを統一的に操作でき、クライアント側のソフトをより簡潔にしています。