Исключение LengthRequiredHttpException
Исключение LengthRequiredHttpException наследуется от класса HttpException
и представляет собой HTTP-ошибку с кодом 411. Оно выбрасывается,
когда сервер требует наличия заголовка Content-Length в запросе,
но клиент его не передал. Первым параметром в конструктор передаётся
сообщение об ошибке, вторым - предыдущее исключение,
третьим - код ответа.
Синтаксис
<?php
use Symfony\Component\HttpKernel\Exception\LengthRequiredHttpException;
$exception = new LengthRequiredHttpException($message, $previous, $code);
?>
Пример
Давайте выбросим исключение внутри контроллера,
если в запросе отсутствует заголовок Content-Length:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\LengthRequiredHttpException;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
if (!$request->headers->has('Content-Length')) {
throw new LengthRequiredHttpException('Content-Length header is missing.');
}
return new Response('hello');
}
}
?>
Результат выполнения кода при отсутствии заголовка:
411 Length Required
Пример
Давайте перехватим исключение и вернём корректный ответ с кодом 411:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\LengthRequiredHttpException;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
try {
if (!$request->headers->has('Content-Length')) {
throw new LengthRequiredHttpException('Content-Length header is missing.');
}
return new Response('hello');
} catch (LengthRequiredHttpException $e) {
return new Response($e->getMessage(), $e->getStatusCode());
}
}
}
?>
Результат выполнения кода:
"Content-Length header is missing."
Смотрите также
-
исключение
HttpException,
которое является базовым классом для HTTP-исключений -
исключение
BadRequestHttpException,
которое представляет ошибку 400 -
метод
getStatusCode,
который возвращает код HTTP-ответа -
метод
getMessage,
который возвращает текст сообщения об ошибке