Files
2026-09-30 11:11:54 +08:00

32 lines
791 B
PHP

<?php
declare(strict_types=1);
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Symfony\Component\HttpFoundation\Response;
final class AssignRequestId
{
public const ATTRIBUTE = 'request_id';
public function handle(Request $request, Closure $next): Response
{
$incoming = $request->headers->get('X-Request-Id');
$requestId = is_string($incoming) && preg_match('/^[A-Za-z0-9_-]{1,64}$/', $incoming) === 1
? $incoming
: (string) Str::uuid();
$request->attributes->set(self::ATTRIBUTE, $requestId);
/** @var Response $response */
$response = $next($request);
$response->headers->set('X-Request-Id', $requestId);
return $response;
}
}