« 第5回全日本スヌーカー選手権 | メイン | DHH loves REST!? その2(ActiveResource) »

2006年06月15日 (木)

DHH loves REST!? その1(RESTプラグインの紹介) [テクニカル]

日本Rubyカンファレンス2006DHHのセッション内容がヤバイ。チケットが入手できなかったので聞けなかったけど(発表資料くれー)。タイトルが「One controller, many ins, many outs」→「Discovering a world of Resources on Rails」。うひょー。世界リソース発見。

Blogなどでレポートを書いてるみなさんありがとうございます。以下関係部分を引用。

moroの日記 - 日本Rubyカンファレンス2006 二日目より
  • CRUD素晴らしい
    • HTTPのメソッドで、既にCRUDできるじゃん。HTTPのPOST GET PUT DELETEメソッドとコントローラのアクションcreate show update destroy、SQLのINSERT SELECT UPDATE DELETEは直接に対応してるじゃん。
    • これを繰り返すのはDRYじゃないよね?
    • ActionController::Routing::Routes.draw{|map| map.resource "/controller/:id" }という宣言をすると、HTTPの各メソッドによって"/controller"を叩くことでCRUDのお好きな操作をば。
UIE Japan Developer Blog: 日本Rubyカンファレンス2006レポート (2006/06/11)より

REST

HTTPメソッドだけでCRUDできるよね。複数個所に分かれているのはDRYじゃないし、
POST /people
GET /people/1
PUT /people/1
DELETE /people/1
form_forでmethodを定義 ブラウザのformでputやdeleteできないのでmethodはhiddenで渡す (javascriptで~~と言いかけて訂正していたのでjsのputやdeleteも使うようになるのかも) また、CRUDはゴールでなくゴールを目指す肝であり設計の技法ですよ。

このへんから推察するに、Simply RESTfulプラグイン、RESTful Railsプラグインの機能(に近いもの)を標準に取り込むということでは?

Simply RESTfulプラグイン

routes.rbにmap.resourceというメソッドを追加。map.resource :itemと書くと以下のようなルーティングが生成される。
VERB URL structure Rails method
Display
GET /items index
GET /items/1 show
Create
GET /items/new new
POST /items create
Remove
DELETE /items/1 destroy
POST /items/1?_method=DELETE destroy (synonym)
Update
GET /items/1;edit edit
PUT /items/1 update
POST /items/1?_method=PUT update (synonym)
POST /items/1;complete complete

これはDHHの言ってるルールと符合する。

RESTful Railsプラグイン

routes.rbにmap.connect_resourceというメソッドを追加。map.connect_resource :item と書くと以下のようなルーティングが生成される。

URL structure Rails method
/item new
/items collection
/items/1 by_id

さらにコントローラに

resource :collection do |r|
  conditions << @books = Book.find(:all)
  r.post do
  ...
  end
end
resource :by_id do |r|
  r.put do
  ...
  end
  r.delete do
  ...
  end
end

などと書いて処理を行う。

その他条件リクエスト処理機能(リクエストされたリソースが更新されていなければ304 Not Modifiedを返すなど)など。詳しい使い方はXML.com: Putting REST on Rails参照。

その2へつづく。

参考: rest/rails - Microformats

投稿者 4bit : 2006年06月15日 11:49 このエントリーを含むはてなブックマーク

トラックバック

このエントリーのトラックバックURL:
http://www.4bit.net/x/mt/mt-tb.cgi/124

コメント

コメントしてください




保存しますか?