悠長にQiita用の記事をまとめてる時間がないのでいつもの殴り書き!
🤔 Middlewareとはなんぞや?
Middleware provide a convenient mechanism for filtering HTTP requests entering your application.
個人的なイメージはこんな感じ
HTTP Request→Middleware→Controller→Middleware→HTTP Response
要するに前処理や後処理で使える共通的な機能といったところです。認証機能とかを噛ましておくと便利だと思います。
🏁 Middlewareを利用する目的
激務の合間を縫ってちょこちょこLaravelでAPIを作っているのですが、共通的に使える認証処理が欲しいというところがあったので、それで使えそうだなというところで思いついたところです。Middlewareの概念はVue.jsやAngularを触っている過程でなんとなく知っていたので、すぐにピンときました。
🥏 Middlewareの作り方
php artisan make:middleware Piyo とすると app/Http/Middleware に生えてきます。このファイルのhandle()の中に処理を書くことで処理を実装でき、 return $next($request); でControllerへリクエストを渡すことができ、 return response(); でレスポンスを返せます。認証成功したら return $next($request);して、失敗したら return response(); すると良さげですね。
また $request->merge(['hoge' => $hoge]); とすることで $request に要素を足せました。
🚀 Middlewareのルーティング
闇雲にMiddlewareが実行されるわけではなく、ルーティングしてこそ進化を発揮してくれるっぽいのでルーティングします。
まずは app/Http/Kernel.php に以下のプロパティを切り、Middlewareの名前とPATHを定義します。
1 2 3 4 5 6 7 8 9 10 |
/** * The application's route middleware. * * These middleware may be assigned to groups or used individually. * * @var array */ protected $routeMiddleware = [ 'piyo' => \App\Http\Middleware\Piyo::class, ]; |
次に routes/web.php で紐付けたいControllerに対して先程のMiddlewareを紐付ければ終わり。
1 |
Route::resource('hoge', 'HogeController')->middleware('piyo'); |
時間がないので今回は以上!
また今回の記事作成においては@aocattleyaさんの【GitHub】README.mdをカッコ可愛くデザインしてアプリの魅力を120%にするからインスピレーションを受け、段落に絵文字をつけてみました!!!普段殺風景な記事も、今回はちょっと見栄え良くなったかな!?