はじめに
Laravelを学んで行く中で
初学者なりに疑問に思った事を記述しております
目次
疑問点
例えば、loginしているユーザーであるか否かを含め、
コントローラー(MVCの「C」)で実装できるので
ミドルウェアの存在する理由とは
結論
時と場合により、必要な機能でした。但し、絶対に必要なわけではなく、
例えば、session情報を他ページに跨ぎ。複数ページにわたり、
同じ内容の処理を施さないとならない場合などに使用する事が多い
ミドルウェアとコントローラーの主な違いを対比した形で理解したら、
納得できたため、下記に記述
対比
ミドルウェア
[実行タイミング]
HTTPリクエストがアプリケーションに到達する前または後に実行
[適用範囲]
アプリケーション全体、または特定のルートに対して適用
[利点]
- 共通のロジック(認証、キャッシュ、エラーハンドリングなど)を実装するのに適している
- チェーンとして連結することができ、リクエストとレスポンスの両方に対して処理を行うことができる
コントローラ
[実行タイミング]
特定のルート(URL)に対するリクエストが来たときのみ実行
[適用される範囲]
一つのルート、または一つのアクションに対し適用
[利点]
- ルートに対する具体的なロジック(データの取得、ビューの表示など)を実装するのに適している
- リクエストの処理結果をレスポンスとして返す
まとめ
webアプリの全体に対する共通処理(認証機能、エラー表示等)内容は、
ミドルウェアを記述し、複数ページに渡って管理を行う。
一方、コントローラーは、あるルートに紐づく単一的な処理内容を記述する形が適している。例えば、getでページを遷移することもそうだし、ブログ記事の一覧表示や個別記事の実装等がそれにあたる。