Heim >Backend-Entwicklung >PHP-Tutorial >Hinzufügen von Anforderungskontext in Laravel -Anwendungen

Hinzufügen von Anforderungskontext in Laravel -Anwendungen

Robert Michael Kim
Robert Michael KimOriginal
2025-03-07 00:24:21811Durchsuche

Adding Request Context in Laravel Applications

Die Kontextfassade von

Laravel verbessert die Anwendungseinsichten, indem Sie im gesamten Anfrage -Lebenszyklus persistente Metadaten hinzufügen können. Dieser Kontext bereichert Ihre Protokolle automatisch mit wertvollen Debugging -Informationen.

Folgendes ist ein praktisches Beispiel für die Verwendung von Anforderungskontext in Middleware und API -Anforderungsprotokollierung:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Context;
use Illuminate\Support\Str;

class ApiRequestLogger
{
    public function handle(Request $request, Closure $next)
    {
        // 添加基本的请求上下文
        Context::add('request_id', Str::uuid()->toString());
        Context::add('path', $request->path());
        Context::add('method', $request->method());
        // 如果已认证,则添加用户上下文
        if ($request->user()) {
            Context::add('user_id', $request->user()->id);
            Context::add('api_key', $request->user()->api_key);
        }
        // 添加性能指标
        $startTime = microtime(true);

        $response = $next($request);
        Context::add('response_time', round((microtime(true) - $startTime) * 1000, 2));
        Context::add('status_code', $response->getStatusCode());
        // 记录 API 请求
        Log::info('API request processed');

        return $response;
    }
}

Ein weiteres Beispiel zeigt, wie die Kontextfassade in einer benutzerdefinierten Klasse verwendet wird:

<?php

use Illuminate\Support\Facades\Context;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;

class RequestContext
{
    public function __construct()
    {
        Context::add('request_id', Str::uuid()->toString());
    }

    public function addUserContext()
    {
        if (Auth::check()) {
            Context::add('user_id', Auth::id());
            Context::add('user_type', Auth::user()->type);
        }
    }

    public function logAction(string $action)
    {
        Log::info("User performed {$action}");
    }
}

Kontextfassade bereichert die Protokollierung der Anwendung, indem wertvolle Metadaten bereitgestellt werden, die während des gesamten Anfrage -Lebenszyklus bestehen, wodurch das Debuggen und die Überwachung effizienter gestaltet werden.

Das obige ist der detaillierte Inhalt vonHinzufügen von Anforderungskontext in Laravel -Anwendungen. 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