【Laravel】ルーティングの基本と応用|GET・POST・リソースルートの使い分け

【Laravel】ルーティングの基本と応用|GET・POST・リソースルートの使い分け Laravel

Laravelでの開発において、ルーティングはアプリケーションの入り口となる重要な構成要素です。この記事では、初心者にもわかりやすくLaravelのルート定義の基本から応用までを解説し、GET・POSTメソッドやリソースルートの使い分けについても紹介します。

ルーティングとは?

ルーティングとは、ユーザーからのリクエスト(URL)を受け取り、それに対応する処理(コントローラやクロージャ)を呼び出す仕組みです。Laravelでは、主に routes/web.php ファイルにルートを定義します。

基本的なGETルートの書き方

Webアプリケーションで最もよく使われるのがGETメソッドです。主にページの表示に使われます。

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

この例では、/aboutにアクセスすると、resources/views/about.blade.php が表示されます。

POSTルートの使い方

POSTメソッドはフォーム送信やデータ登録などに使われます。

Route::post('/contact', function () {
    // フォーム送信内容の処理
});

HTMLフォームでmethod="post"を指定すると、このルートが呼び出されます。

ルートに名前をつける(名前付きルート)

ルートに名前をつけることで、リンク生成などで便利に活用できます。

Route::get('/home', function () {
    return view('home');
})->name('home');

route('home') とすることでURLを生成できます。

コントローラを使ったルーティング

処理が複雑になってきた場合は、クロージャではなくコントローラに処理を移します。

Route::get('/user/{id}', [UserController::class, 'show']);

このルートでは、URLの{id}に応じてUserControllershowメソッドが呼び出されます。

リソースルートで効率的にルート定義

Laravelでは、CRUD操作に必要なルートを一括で定義できる「リソースルート」が用意されています。

Route::resource('posts', PostController::class);

この1行で、以下の7つのルートが自動的に生成されます。

  • GET /posts
  • GET /posts/create
  • POST /posts
  • GET /posts/{post}
  • GET /posts/{post}/edit
  • PUT/PATCH /posts/{post}
  • DELETE /posts/{post}

効率的にCRUD処理を実装したい場合に非常に便利です。

ルートのグループ化とミドルウェア

ルートをグループ化してミドルウェアをまとめて適用することも可能です。

Route::middleware(['auth'])->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
    Route::get('/settings', [SettingsController::class, 'index']);
});

このように書くと、認証済みのユーザーのみがアクセスできるルートになります。

まとめ

Laravelのルーティングは柔軟かつ強力で、シンプルなサイトから大規模なWebアプリケーションまで対応できます。GETやPOSTの基本メソッドだけでなく、リソースルートやミドルウェアを活用することで、保守性の高いコードが書けるようになります。