HTTPメソッドごとのルーティング設定
Laravelのルーティング設定の基本が理解してもらえたところで、ルーティング登録のバリエーションを紹介します。
HTTPメソッドによるバリエーション
実は、ここまで紹介してきたRoute::get()によるルーティング登録というのは、HTTPのGETメソッドによるアクセスがあった場合にのみ実行されるルーティング情報となります。では、POSTメソッドの場合はどのように記述するのでしょうか。これは、get()がpost()に変わるだけです。さらに、GETでもPOSTでも処理させたい場合はany()を使います。まとめると、表のようになります。
| HTTPメソッド | 構文 |
|---|---|
| GET | Route::get(ルーティングパターン, 対応するコールバック関数); |
| POST | Route::post(ルーティングパターン, 対応するコールバック関数); |
| GETでもPOSTでも | Route::any(ルーティングパターン, 対応するコールバック関数); |
any()について補足しておきましょう。実は、LaravelはGETとPOST以外にもPUTやDELETEなどのHTTPメソッドの場合のルーティングも登録できる仕組みになっています。any()はそのどのメソッドでアクセスされても実行されるルーティングを登録する方法です。これを、もしGETとPOSTに限定したい場合は、以下のようにmatch()を使います。
Route::match(["get", "post"], ルーティングパターン, 対応するコールバック関数);
リダイレクトルーティング
Laravelのルーティングでは、リダイレクトの設定も行えます。その場合は、以下の構文を利用します。
Route::redirect(ルーティングパターン, リダイレクト先URL);
例えば、以下の記述をしたとします。
Route::redirect("/google", "https://www.google.com/");
この場合、以下のURLでアクセスすると、GoogleのTOPページにリダイレクトします。
- http://localhost/firstlaravel/public/google
この、リダイレクトルーティング登録は、デフォルトでは302リダイレクトです。302リダイレクトというのは、一時的なリダイレクトを表します。これは例えば、メンテナンス画面やエラー画面へのリダイレクトなど、通常では正常な画面が表示されるが何らかの理由で「一時的に」別画面を表示させなければならない場合に使います。
一方、ページの移転や削除などで「恒久的に」別の画面にリダイレクトする必要がある場合は、301リダイレクトを使います。その場合は、第3引数に301を記述し、以下のようにします。
Route::redirect("/google", "https://www.google.com/", 301);
まとめ
今回は、Laravelの動作原理を説明するとともに、ルーティングの仕組み、その登録方法を紹介しました。とはいえ、画面に表示させたものは単純な文字列でした。
次回は、Laravelで本格的なHTMLを表示させるための方法、つまり、ビューの扱いを紹介します。その際、中心となるのがテンプレートエンジンBladeです。そのあたりを解説していきます。
