Laravel - ルーティング:入門ガイド

こんにちは、Laravel開発者を目指している皆さん!今日は、Laravelのルーティングの世界に一緒に飛び込みます。近所の親切なコンピュータ教師として、この基本概念を理解するまでガイドしますので、コーヒー(またはお好みでテー)を片手に、一緒に深めましょう!

Laravel - Routing

ルーティングとは?

始める前に、ルーティングが実際に何かを理解しましょう。大きな図書館(インターネット)にいるとします。特定の本(ウェブページ)を見つけたいと思っています。図書館司書(ルーター)があなたにその本を見つける手助けをしてくれます。ウェブ開発におけるルーティングは、この図書館司書のように、ウェブリクエストをアプリケーションの正しい部分に導くものです。

基本的なルーティング

まず基本的なことをから始めましょう。Laravelでは、ルーティングは routes/web.php ファイルで処理されます。ここで、アプリケーションにどのように不同のURLリクエストに応えるかを指示します。

シンプルなルート

以下は、最もシンプルな形のルートです:

Route::get('/', function () {
return 'Hello, World!';
});

これを分解すると:

  • Route::get() は Laravel に GET リクエストに応えるように指示します。
  • 第一引数 '/' は URL パス(この場合はホームページ)です。
  • 第二引数は、ブラウザに返す内容を返す関数です。

ウェブサイトのホームページにアクセスすると、「Hello, World!」が表示されます。

ビューを返すルート

単なるテキストを返すのではなく、完全なHTMLページを返したいことがよくあります。Laravelはこれを簡単にします:

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

このルートは、誰かが /welcome を訪れると welcome ビューを返します。ビューは resources/views ディレクトリに保存されたHTMLテンプレートです。

コントローラーを使ったルート

アプリケーションが成長すると、コードをより良く整理するためにコントローラーを使いたくなります:

Route::get('/users', 'UserController@index');

このルートは、誰かが /users を訪れると UserControllerindex メソッドを呼び出します。

ルートパラメータ

もう少し興味深いことに進みましょう。URLに動的セグメントを処理したい場合はどうでしょうか?

基本的なパラメータ

Route::get('/user/{id}', function ($id) {
return 'User '.$id;
});

このルートは /user/1/user/2 などにマッチします。URLの {id} は関数に渡される変数になります。

任意のパラメータ

時々、パラメータが任意であることがあります。それも処理できます:

Route::get('/user/{name?}', function ($name = 'John') {
return 'Hello, '.$name;
});

このルートは /user/user/Jane どちらにも対応します。名前が提供されない場合は、デフォルトで 'John' になります。

パラメータの制約

パラメータに制約を加えることもできます。正規表現を使います:

Route::get('/user/{id}', function ($id) {
return 'User '.$id;
})->where('id', '[0-9]+');

このルートは、id が1つ以上の数字で構成されている場合にのみマッチします。

ネーム付きルート

ネーム付きルートを使用すると、URLではなく名前を使ってルートを参照できます。これはアプリケーション内でURLを生成したりリダイレクトをしたいために特に便利です。

ネーム付きルートの定義

Route::get('/user/profile', function () {
//
})->name('profile');

ネーム付きルートの使用

ルートが名前付きに設定されると、以下のようにURLを生成したりリダイレクトをしたたりできます:

// URLを生成する...
$url = route('profile');

// リダイレクトする...
return redirect()->route('profile');

これは非常に便利で、プロファイルページのURLを変更する必要があった場合、ルートの定義を1か所で変更するだけで、すべての参照が自動的に新しいURLを使用するようになります。

ルートグループ

アプリケーションが成長すると、同じミドルウェアやプレフィックスを複数のルートに適用することがあります。Laravelはこれらのルートをグループ化することを許可します:

Route::middleware(['auth'])->group(function () {
Route::get('/dashboard', function () {
// 認証が必要...
});

Route::get('/account', function () {
// 認証が必要...
});
});

これは auth ミドルウェアを /dashboard/account の両方に適用します。

ルートメソッド

Laravelはすべての標準的なHTTP動詞をサポートしています。以下は快速参照表です:

HTTP動詞 ルートメソッド
GET Route::get()
POST Route::post()
PUT Route::put()
PATCH Route::patch()
DELETE Route::delete()
OPTIONS Route::options()

mêmeルートに対して複数のHTTP動詞を応答するすることもできます:

Route::match(['get', 'post'], '/', function () {
//
});

Route::any('/', function () {
//
});

それで、Laravelのルーティングの世界への第一歩を踏み出しました。慣れるには練習が大事ですので、さまざまなルートを試してみてください。

最後に、ちょっとしたルーティングのジョークをどうぞ:開発者はなぜ破産したのでしょうか?すべてのキャッシュを使い果たしたからです!?

ハッピーコーディング、そしてあなたのルートがいつも望む場所に導いてくれることを祈っています!

Credits: Image by storyset