Heim  >  Artikel  >  PHP-Framework  >  So behandeln Sie Ausnahmen mithilfe von Middleware in Laravel

So behandeln Sie Ausnahmen mithilfe von Middleware in Laravel

WBOY
WBOYOriginal
2023-11-04 14:26:011241Durchsuche

So behandeln Sie Ausnahmen mithilfe von Middleware in Laravel

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 Datei app/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,
    ...
];

Jetzt haben wir es geschafft Ausnahme: Die Middleware ist in der globalen Middleware registriert. Wenn die Anforderung den Controller erreicht und eine Ausnahme auftritt, wird diese von der Middleware abgefangen und gibt eine JSON-Antwort mit Fehlerinformationen zurück.

Zusätzlich zur globalen Middleware können wir Middleware auch auf bestimmte Routen anwenden. Suchen Sie das Attribut $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');

Fügen Sie dann die Middleware in der Routendefinition hinzu, das Beispiel lautet wie folgt:

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn