コンピューターサイエンス入門:理論編
URL ルーティング
この回でやること
URLを区切ってControllerへ振り分ける流れを読み解き、固定の語と未定義の操作を確かめます。
- 読む 約 7 分
- 最後にクイズ 1 問
届くのは /users/42/edit という文字列
ブラウザから届いた /users/42/edit を見て、ユーザー編集の処理を呼ぶ。その振り分けがルーティングです。この回ではHTTPメソッドなどは省き、読み取り要求のURLのパスだけで判断します。
MVCは進行をController、データをModel、画面をViewに分けます。ルーティングはControllerへの入口です。/users/1、/users/2 と全部並べず、IDの位置を決めます。
区切ると、先頭に空文字が生まれる
スラッシュで区切った結果を見ます。
JavaScript
"/articles/7/edit".split("/")
// ["", "articles", "7", "edit"]先頭と末尾のスラッシュは空文字を作ります。最初の要素をリソース名とみなすと位置がずれるため、空の要素を除きます。
JavaScript
"/articles/7/edit/".split("/").filter(p => p.length > 0)
// ["articles", "7", "edit"]filter は条件に合う要素だけを残す操作です。ここでは長さが0より大きい文字列を残します。
要素の数と中身を一緒に見る
リソース名は登録済みのusers、articlesなどの小文字とし、振り分け先では頭文字を大文字にします。
| パス | 振り分け先 |
|---|---|
/users | Users#index |
/users/new | Users#new |
/users/42 | Users#show |
/users/42/edit | Users#edit |
# の前はController名、後ろは処理名です。indexは一覧、newは新規作成、showは詳細、editは編集を指します。
2要素なら固定の語 new を先に確かめ、それ以外はIDとして詳細へ進みます。実際のサービスでは使えるIDの形式も決めます。
3要素なら、最後が edit の場合だけ編集へ進みます。/users/42/delete は3要素でもこの表にないため404です。404は対応する行き先が見つからないことを示します。
名前は先頭だけを大文字にします。今回の小文字の入力なら、articlesはArticlesになります。
例題で確かめる
/articles/18/edit/ を読みます。空文字を除くと articles、18、edit の3要素です。末尾がeditなので編集に進み、頭文字を大文字にして振り分け先は Articles#edit です。末尾のスラッシュを4つ目の要素として数えないことが判断のポイントです。