ミドルウェアを使用して Laravel で例外を処理する方法
ミドルウェアは、Laravel フレームワークの重要な概念であり、リクエストがコントローラーに到達する前と後で例外を処理できます。一連の操作。一般的な権限の検証、ロギング、その他の機能に加えて、ミドルウェアを使用して例外を処理することもできます。この記事では、ミドルウェアを使用してLaravelで例外を処理する方法を検討し、具体的なコード例を示します。
まず、例外処理ミドルウェアを作成する必要があります。次のコマンドを実行してミドルウェア クラスを生成できます。
php artisan make:middleware ExceptionHandlerMiddleware
次に、生成されたミドルウェア クラス ファイルを開くと、クラスの構造が次のとおりであることがわかります。 handle メソッドを使用すると、要求された例外を処理できます。デモのために、あらゆる種類の例外をキャッチし、一律にエラー メッセージを返します。コードを次のように変更できます。
namespace AppHttpMiddleware; use Closure; class ExceptionHandlerMiddleware { public function handle($request, Closure $next) { return $next($request); } }
上記のコードでは、まずリクエストを実行して結果を取得しようとします。例外が発生した場合、例外情報、コード、ステータス コードを取得し、この情報を含む JSON 応答を返します。例外コードが 4xx または 5xx の範囲内にある場合は、その例外コードを応答ステータス コードとして使用します。それ以外の場合は、500 ステータス コードを返します。
次に、このミドルウェアをグローバル ミドルウェアまたは指定されたルーティング ミドルウェアに登録する必要があります。
app/Http/Kernel.phpファイル内の$middleware
属性を見つけて、ミドルウェア クラスを導入します。サンプル コードは次のとおりです。例外処理ミドルウェアがグローバルミドルウェアに登録されています。リクエストがコントローラーに到達したときに例外が発生すると、ミドルウェアによってキャッチされ、エラー情報を含む JSON 応答が返されます。グローバルミドルウェアに加えて、指定したルートにミドルウェアを適用することもできます。
ファイルで
$routeMiddleware属性を見つけて、次のコードを追加します:
次に、ルート定義にミドルウェアを追加します。例は次のとおりです。namespace AppHttpMiddleware; use Closure; use Exception; use IlluminateHttpResponse; class ExceptionHandlerMiddleware { public function handle($request, Closure $next) { try { return $next($request); } catch (Exception $exception) { $message = $exception->getMessage(); $code = $exception->getCode(); $status = $exception->getCode() >= 400 && $exception->getCode() < 600 ? $exception->getCode() : 500; return response()->json(['message' => $message, 'code' => $code], $status); } } }
protected $middleware = [ ... AppHttpMiddlewareExceptionHandlerMiddleware::class, ... ];
ログイン後にコピー
このように、対応するルートにアクセスする際に発生する例外はミドルウェアによって捕捉され、処理されます。上記は、Laravel で例外を処理するためにミドルウェアを使用する詳細な例です。例外処理ミドルウェアを利用することで、アプリケーション内で発生した例外をきめ細かく処理できるようになり、コードの可読性や保守性が向上します。この記事がお役に立てば幸いです!
以上がLaravelでミドルウェアを使用して例外を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-08-24 17:33:39
-
2024-08-24 17:32:39
-
2024-08-24 17:32:04
-
2024-08-24 17:31:41
-
2024-08-24 17:30:52
-
2024-08-24 17:04:08
-
2024-08-24 17:03:43
-
2024-08-24 17:02:09
-
2024-08-24 17:01:08
-
2024-08-24 17:00:10
最新の問題
Guzzle 例外のキャッチ
開発中の API で実行されている一連のテストで例外をキャッチしようとしています。Guzzle を使用して API メソッドを使用しています。テストを try/catch ブロック...
から 2023-11-16 14:36:03
0
12
290
Vue.js 3 と Pinia Getters に関する問題
私は Angular から Vue.js に切り替えて、そのアーキテクチャを理解しようとしています。現在、基本的な問題に直面しており、多くの回避策を使用していますが、実際には一時的...
から 2023-11-03 18:52:56
0
1
244