6
0
Fork 0
jiqu-library-server/app/Http/Middleware/AssignRequestId.php

49 lines
1.1 KiB
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
class AssignRequestId
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$requestId = $this->getRequestId($request);
Log::withContext([
'request_id' => $requestId,
]);
return tap($next($request), function ($response) use ($requestId) {
$response->headers->set('X-Request-ID', $requestId);
});
}
/**
* 获取请求 ID
*
* @param \Illuminate\Http\Request $request
* @return string
*/
private function getRequestId(Request $request): string
{
if (blank($requestId = $request->headers->get('X-Request-ID'))) {
$requestId = Str::uuid()->toString();
$request->headers->set('X-Request-ID', $requestId);
}
return $requestId;
}
}