РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
539 of 1361 menu

Исключение PreconditionRequiredHttpException

Класс PreconditionRequiredHttpException относится к семейству HTTP-исключений Symfony и соответствует коду ответа 428. Он выбрасывается, когда сервер требует, чтобы клиент отправил обязательные заголовки предварительного условия (например, If-Match или If-Unmodified-Since), но запрос их не содержит. Первым параметром конструктора передаётся текст сообщения, вторым - предыдущее исключение, третьим - массив заголовков ответа.

Синтаксис

<?php use Symfony\Component\HttpKernel\Exception\PreconditionRequiredHttpException; $exception = new PreconditionRequiredHttpException( string $message = '', \Throwable $previous = null, int $code = 0, array $headers = [] ); ?>

Пример

Давайте выбросим исключение PreconditionRequiredHttpException в контроллере, если запрос не содержит заголовок If-Match:

<?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\PreconditionRequiredHttpException; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/edit', name: 'article_edit')] public function edit(Request $request): Response { if (!$request->headers->has('If-Match')) { throw new PreconditionRequiredHttpException( 'The If-Match header is required for this request.' ); } return new Response('article updated'); } } ?>

Результат выполнения кода при отсутствии заголовка If-Match:

HTTP/1.1 428 Precondition Required Content-Type: application/json { "title": "Precondition Required", "status": 428, "detail": "The If-Match header is required for this request." }

Пример

Давайте перехватим исключение PreconditionRequiredHttpException и получим его статус-код через метод getStatusCode:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\PreconditionRequiredHttpException; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/check', name: 'article_check')] public function check(): Response { try { throw new PreconditionRequiredHttpException('Precondition is required.'); } catch (PreconditionRequiredHttpException $e) { $status = $e->getStatusCode(); $message = $e->getMessage(); return new Response($status . ': ' . $message); } } } ?>

Результат выполнения кода:

"428: Precondition is required."

Смотрите также

  • исключение PreconditionFailedHttpException,
    которое соответствует коду 412
  • исключение HttpException,
    которое является базовым для HTTP-исключений
  • метод getStatusCode,
    который возвращает код ответа исключения
  • метод getMessage,
    который возвращает текст сообщения исключения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить