RESTとRailsスタイル
             @tkawa




2012.2.26 第5回デザイナー向けプログラム部 #p4d
@tkawa
•   川村 徹


•   Rails (Ruby)

•   ほぼWebアプリばかり
    開発してます


•   U2plus http://u2plus.jp/
REST
RESTって何?

• Webの「建築様式」(Architectural Style)
• ざっくりいうとWebのしくみ・元にな
 る考え方

• Webが成功している理由の1つ
なぜREST?
       Webアプリを作るときは、
 「RESTにしたほうがいい」とよく言われるけど…

• Web (HTTP, HTML,...) の特長を十分に活
 かす

• 人間とソフトウェア(自動処理)
 両方に優しい

• シンプルな設計の指針
どうすればREST?

• 抽象的なものなので、使う人によって
 意味が違って伝わらないことも…

• 具体的にはどうすればいいの?
Railsスタイル
• RESTに沿っていて、さらにより具体的
 な設計のパターンを提示している

• 今のところ成功している(!)
• Rails以外で作るときにも使えばいいよ
 ね
Webのしくみ
(ざっくり)
ブラウザ
1.




                      2.
   ブラウザ                       Webサーバ

1. ブラウザからWebサーバへリクエストを送る
2.レスポンス(HTML, CSS, JavaScript, JPEG,...)を返す
重要なのは
• URL
• リクエストメソッド
• ステータスコード
1.




                      2.
   ブラウザ                          Webサーバ
                           URL, リクエストメソッド

1. ブラウザからWebサーバへリクエストを送る
2.レスポンス(HTML, CSS, JavaScript, JPEG,...)を返す
 ステータスコード
1.




       2.
ブラウザ        Webサーバ
URL

• Web上に存在する「モノ(情報)」の
 名前

• ブラウザのアドレス欄に表示される
• シンプルで意味のわかるものがよい
P4Dのwikiに新しくページ作りたいんだけ
  ど、どうすればいいんだっけ?
P4Dのwikiに新しくページ作りたいんだけ
   ど、どうすればいいんだっけ?


  GitHubのトップの検索ボックスで
 「prog4designer」で検索してください。
そこから下のほうの「meetups」を押して、
右上の「Wiki」を押して、「New Page」を
       押してください。
P4Dのwikiに新しくページ作りたいんだけ
       ど、どうすればいいんだっけ?




https://github.com/prog4designer/meetups/wiki/_new
POST https://github.com/prog4designer/meetups/wiki
リクエストメソッド

 GET     POST   PUT    DELETE

 取得      作成     更新      削除



       基本的にはこの4つだけ!!
例えば「ログインする」という操作はない
リクエスト
     GET https://github.com/prog4designer/meetups/wiki
   POST https://github.com/prog4designer/meetups/wiki
     PUT https://github.com/prog4designer/meetups/wiki
 DELETE https://github.com/prog4designer/meetups/wiki

 メソッド                        URL
                            「モノ」
「どうする」 動詞                               名詞
GET http://example.com/users/show/123




POST http://example.com/users/create
GET http://example.com/users/show/123


  GET http://example.com/users/123


POST http://example.com/users/create


   POST http://example.com/users
GET http://example.com/users/show/123


  GET http://example.com/users/123


POST http://example.com/users/create


   POST http://example.com/users
Railsスタイル
GET   POST   PUT   DELETE


/user
http://d.hatena.ne.jp/tkawa/20110819
http://d.hatena.ne.jp/tkawa/20110819/p1
http://baseball.example.jp/leagues
http://baseball.example.jp/leagues/central
http://railsapp.example.com/users
http://railsapp.example.com/users/123

/ {まとまり} / {名前, 番号}
GET   POST   PUT   DELETE


  /users


/users/123
GET     POST         PUT        DELETE


  /users     index   create         -             -


/users/123   show      -         update       destroy


                               GET /users/new → new
                              GET /users/123/edit → edit
まとめ
• 重要なのは                                       おすすめ
                                           ※私が書いたわけではありません

 - URL
 - リクエストメソッド

 - ステータスコード

• Railsスタイルに従えば楽
• つづく?
http://d.hatena.ne.jp/tkawa/searchdiary?
              word=*[rest]

RESTとRailsスタイル