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
コマンドでルーティングテーブルを確認できる