<?php
namespace App\EventListener;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
class ApiListener
{
public function onKernelException(ExceptionEvent $event): void
{
if (!str_starts_with($event->getRequest()->getRequestUri(), '/api')) {
return;
}
$exception = $event->getThrowable();
if ($exception instanceof HttpExceptionInterface) {
$response = new JsonResponse([
'code' => $exception->getCode() ? $exception->getCode() : null,
'message' => $exception->getMessage(),
]);
$response->setStatusCode($exception->getStatusCode());
$response->headers->replace($exception->getHeaders());
$event->setResponse($response);
}
}
}