Maison > développement back-end > tutoriel php > Ajout de contexte de demande dans les applications Laravel

Ajout de contexte de demande dans les applications Laravel

Robert Michael Kim
Libérer: 2025-03-07 00:24:21
original
806 Les gens l'ont consulté

Adding Request Context in Laravel Applications

La façade du contexte de Laravel améliore les informations d'application en vous permettant d'ajouter des métadonnées persistantes tout au long du cycle de vie de la demande. Ce contexte enrichit automatiquement vos journaux avec de précieuses informations de débogage.

Ce qui suit est un exemple pratique de l'utilisation du contexte de la demande dans la journalisation des demandes de middleware et API:

<?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;
    }
}
Copier après la connexion

Un autre exemple montre comment utiliser la façade de contexte dans une classe personnalisée:

<?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}");
    }
}
Copier après la connexion

La façade de contexte enrichit l'exploitation de la divagation de l'application en fournissant des métadonnées précieuses qui persistent tout au long du cycle de vie de la demande, rendant le débogage et la surveillance plus efficaces.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal