So verwenden Sie Middleware zur Behandlung von Ausnahmen in Laravel
Middleware ist ein wichtiges Konzept im Laravel-Framework, das eine Reihe von Vorgängen ausführen kann, bevor und nachdem die Anforderung den Controller erreicht. Zusätzlich zur allgemeinen Berechtigungsüberprüfung, Protokollierung und anderen Funktionen kann Middleware auch zur Behandlung von Ausnahmen eingesetzt werden. In diesem Artikel untersuchen wir, wie Middleware zur Behandlung von Ausnahmen in Laravel verwendet wird, und stellen spezifische Codebeispiele bereit.
Zuerst müssen wir eine Middleware für die Ausnahmebehandlung erstellen. Eine Middleware-Klasse kann durch Ausführen des folgenden Befehls generiert werden:
php artisan make:middleware ExceptionHandlerMiddleware
Öffnen Sie als Nächstes die generierte Middleware-Klassendatei, und wir können sehen, dass die Struktur der Klasse wie folgt ist:
namespace AppHttpMiddleware; use Closure; class ExceptionHandlerMiddleware { public function handle($request, Closure $next) { return $next($request); } }
In der Handle-Methode können wir das verarbeiten beantragte Ausnahme. Zur Veranschaulichung werden wir jede Art von Ausnahme abfangen und einheitlich eine Fehlermeldung zurückgeben. Wir können den Code wie folgt ändern:
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); } } }
Im obigen Code versuchen wir zunächst, die Anfrage auszuführen und das Ergebnis zu erhalten. Wenn eine Ausnahme auftritt, erhalten wir die Ausnahmeinformationen, den Code und den Statuscode und geben eine JSON-Antwort mit diesen Informationen zurück. Wenn der Ausnahmecode in den Bereich 4xx oder 5xx fällt, verwenden wir den Ausnahmecode als Antwortstatuscode, andernfalls geben wir einen Statuscode 500 zurück.
Als nächstes müssen wir diese Middleware bei der globalen Middleware oder der angegebenen Routing-Middleware registrieren. Suchen Sie das Attribut$middleware
in der Dateiapp/Http/Kernel.php
und führen Sie die Middleware-Klasse wie folgt ein:app/Http/Kernel.php
文件中找到$middleware
属性,并将中间件类引入,示例代码如下:
protected $middleware = [ ... AppHttpMiddlewareExceptionHandlerMiddleware::class, ... ];
现在,我们已经将异常处理中间件注册到了全局中间件中。当请求到达控制器时,如果发生了异常,将会被中间件捕获并返回一个带有错误信息的JSON响应。
除了全局中间件,我们还可以将中间件应用到指定的路由中。在app/Http/Kernel.php
文件中找到$routeMiddleware
protected $routeMiddleware = [ ... 'exception.handler' => AppHttpMiddlewareExceptionHandlerMiddleware::class, ... ];
$routeMiddleware
in der Datei
app/Http/Kernel.php
und fügen Sie den folgenden Code hinzu:
Route::get('/', function () { // Your code here })->middleware('exception.handler');
rrreee
Auf diese Weise wird beim Zugriff auf die entsprechende Route die auftretende Ausnahme von der Middleware abgefangen und verarbeitet. Das Obige ist ein detailliertes Beispiel für die Verwendung von Middleware zur Behandlung von Ausnahmen in Laravel. Durch den Einsatz von Middleware zur Ausnahmebehandlung können wir Ausnahmen, die in der Anwendung auftreten, feinkörnig behandeln und so die Lesbarkeit und Wartbarkeit des Codes verbessern. Ich hoffe, dieser Artikel hilft Ihnen!Das obige ist der detaillierte Inhalt vonSo behandeln Sie Ausnahmen mithilfe von Middleware in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!