Laravel - 4. ルーティング

それではWebアプリケーションの開発を進めていきましょう。Laravelにはルーティングという仕組みがあります。ルーティングとは「HTTPメソッドとURIの組み合わせ」と「PHPプログラム」を関連付ける仕組みです。

Laravelではこのルーティングを routes/web.php ファイルで定義します。まずは routes/web.php ファイルを開いてみましょう。

<?php

Route::get('/', function () {
    return view('welcome');
});

プログラムのコメント部分は割愛しています。以降のサンプルコードでもコメント部分は割愛するものとします。

デフォルトの routes/web.php ファイルでは / というパスへのGETリクエストに対して、 function () で始まる無名関数(クロージャ)が割り当てられています。この / ルートはLaravelのWelcome画面の表示を指示しています。

Route クラスについても補足しておきましょう。 Route::get メソッドはGETリクエストを処理します。POSTリクエストを処理する場合は Route::post メソッドを使います。いずれも第1引数にパス、第2引数にパスに関連付けたプログラムを指定します。

PHPの :: (ダブルコロン)演算子はstaticメソッドの呼び出しを意味します。Laravelには Route クラスのようにstaticメソッドを実装したクラスが複数提供されています。このようなクラスをファサードと呼びます。ファサードはアプリケーションの様々なプログラムから手軽に再利用できるように設計されています。

次に routes/web.php ファイルを編集して次のような /hello というルートを追加してみましょう。

<?php

Route::get('/', function () {
    return view('welcome');
});

Route::get("/hello", function() {
    return "Hello Laravel!";
});

ここでは Route クラスのstaticな get メソッドを使って /hello というパスへのGETリクエストに対して "Hello Laravel!" という文字列を返す無名関数を割り当てています。

ルーティングテーブルの確認

続いて routes/web.php ファイルで定義したルーティングテーブルを確認してみましょう。コマンドラインから次のように ./vendor/bin/sail artisan route:list コマンドを入力します。

$ ./vendor/bin/sail artisan route:list --compact
+----------+---------------------+------------------------------------------------------------+
| Method   | URI                 | Action                                                     |
+----------+---------------------+------------------------------------------------------------+
| GET|HEAD | /                   | Closure                                                    |
| GET|HEAD | api/user            | Closure                                                    |
| GET|HEAD | hello               | Closure                                                    |
| GET|HEAD | sanctum/csrf-cookie | Laravel\Sanctum\Http\Controllers\CsrfCookieController@show |
+----------+---------------------+------------------------------------------------------------+

上記のルーティングテーブルから3つのルートが定義されていることがわかります。また今回定義した GET リクエスト( HEAD リクエストも含む)と hello というURIへの組み合わせに対して、クロージャ(Closure)が定義されているのがわかります。

api/user というURIは routes/api.php で定義されているルート情報です。JSONレスポンスを返却するようなWeb APIを開発する用途に利用できます。

動作確認

ルーティングテーブルを確認できたので、ブラウザを起動してWebアプリケーションにアクセスしてみましょう。

http://localhost/hello

実行結果のように画面に Hello Laravel! という出力を確認できるでしょう。 /hello というパスへのGETリクエストに割り当てられたPHPプログラム(クロージャ)が動作しているのがわかります。

まとめ

  • ルーティングとは「HTTPメソッドとURIの組み合わせ」と「PHPプログラム」を関連付ける仕組み
  • Laravelでは routes/web.php ファイルで定義する
  • ./vendor/bin/sail artisan route:list コマンドでルーティングテーブルを確認できる