Ruby / Ruby on Railsビギナーズ倶楽部
Railsから学ぶRESTfulなURI設計
2015.02.14
Self-Intoroduction
• WordPressコミュニティへ参加するのが好きで、勉強会もやってます。
• Swiftビギナーズ倶楽部@Co-Edoも開催しています( ́ ▽ ` )ノ
• Rubyで開発をしたい、アプリケーションエンジニア(LAMP/Java/Oracle)
http://wp-moku.doorkeeper.jp/
一緒に勉強しましょう( ́ ▽ ` )ノ
勉強会やってます!
http://swift-beginners.doorkeeper.jp/
Rails勉強しだすと
RESTとかRESTfulとか
よく目にするよね。
なにそれ?
1)REST / RESTfulって何?
Today's Agenda
2)URIの重要性を考える!
3)RESTfulなURI設計とは?
1)REST / RESTfulって何?
Railsに敷かれているレールの概念のひとつ。
• 正式名称:REpresentational State Transfer
• RESTの原則に沿った実装をRESTfulという。
• RESTは、Webの設計思想のひとつであり、
RESTfulな設計
RESTfulなAPI
使い方:
RailsでのRESTfulを理解する前に・・・
MVCモデルの
おさらい
参照元:Ruby on Rails チュートリアル
http://railstutorial.jp/
resourcesでルーティングを記述すると、
自動的にRESTfulなURIが生成される。
  config/routes.rbに・・・例えば
URIとアプリケーションの
パラメータを結びつける仕組み
$ rake routes
Prefix Verb URI Pattern Controller#Action
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
resources :users
config/routes.rbに、下記のように記述して・・・。
ルーティングを確認すると・・・。
参考情報:http://railsdoc.com/routes
2)URIの重要性を考える!
URI(Uniform Resource Identifier)は、
「統一リソース識別子」
「リソースを統一的に識別するID」
RESTの重要な概念の一つに
リソース(Resource)というキーワードがある。
例えば、Co-Edoのブログ
http://blog.coworking.tokyo.jp/
これも
リソース
2)URIの重要性を考える!
URIは、WEBの
中核となる技術
URIを使うとWEB上の全てのリソースを
一意に示すことができるので、
使いやすいURIの設計はとても重要!
URIとURLの違いは?
正確には、URI = URL + URN
ただ、URIをURLと読み替えて問題ない。
変わらないURI(Cool URI)
変わりにくいURIを設計する為のチェック
(WEBに適している)
3)RESTfulなURI設計とは?
・URIにプログラミング言語依存の拡張子を含めない。
・URIにセッションIDを含めない。
・URIはリソースを表現する名詞にする。
・URIに実装依存のパス名を利用しない。
・URIにプログラミング言語のメソッド名を利用しない。
(.pl、.rb、.do、.jspなど)
(cgi-bin、servletなど)
ま と め
良いURIの設計は、
良いWEBサービスの設計に繋がる、
とても重要なパーツ。
RESTfulなURIを設計しましょう!
参 考 書 籍
Webを支える技術
-HTTP、URI、HTML、そしてREST
http://amzn.to/1F81Gh0
わからないー!
だれか教えてー♪
Railsビギナーズ倶楽部は
わからないことは周りの人に聞いて、気軽に教え合って、
皆の疑問を1つでも解決して、楽しんで開発していきましょう。
Let's study together!
Thank you :)

Railsから学ぶRESTfulなuri設計