ルーティング実験

2014-01-06

Laravel 4 のルーティングは、少々複雑なので少し実験をしてみました。
使用した Laravel のバージョンは、4.1.11 です。

まず、基本的な指定方法の調査です。
次のような SampleController を用意します。

上記コントローラをサイトのトップノードに関連付ける場合は、次のようにルートを定義します。

上記の書き方は Laravel のドキュメントでも使用されています。

Laravel のドキュメントには書かれていませんが、スラッシュを省略しても正しく認識されるようです。

一方、Laravel のドキュメントではパスを指定して定義する場合は

のように、先頭にスラッシュを付けていませんが

のように、先頭にスラッシュを付けても同じように動作します。

まず、同じルートを定義した場合の実験です。 次のような SampleController を用意します。

続いて routes.php に次のようにルートを定義します。

この設定では、2 番目の設定が有効になり、http://[サーバールート]/sample/hoge にアクセスした場合は method2 が呼ばれます。 どうやら後勝ちのようです。 実際に上下を入替えて とした場合は method1 が呼ばれます。 続いて REST フルコントローラーへのルーティングとの比較です。 SampleController を次のように定義します。 routes.php では次のように定義します。 上記設定で http://[サーバールート]/sample/hoge にアクセスすると jump メソッドが呼ばれます。 こちらでも定義を入替えて次のようにしてアクセスしてみます。 すると、anyHoge が呼ばれます。 HTTP 動詞へのルートと REST フルコントローラーへのルートを定義した場合では、 先勝ちになるようです。 続いて REST フル同士の比較です。 SampleController を次のように定義。 あらたに AppleController というファイルを追加して次のように定義。 以上のように同じメソッドを持たせます。 routes.php は次のように定義します。 http://[サーバールート]/tekito/hoge にアクセスすると、 AppleController の anyHoge が呼ばれます。 これまでと同様に入替えます。 すると、SampleController の anyHoge が呼ばれます。 後勝ちのようです。 一旦ここまでをまとめると、 HTTP 動詞 : HTTP 動詞 -> 後勝ち HTTP 動詞 : REST フル -> 先勝ち REST フル : REST フル -> 後勝ち
▲ページのトップへ戻る