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

Исключение NotAcceptableHttpException

Исключение NotAcceptableHttpException представляет собой специализированный класс для генерации HTTP-ответа со статусом 406 Not Acceptable. Оно применяется, когда клиент запрашивает данные в формате, который сервер не может предоставить. Первым параметром передаётся сообщение об ошибке, вторым - предыдущее исключение.

Синтаксис

<?php use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException; throw new NotAcceptableHttpException($message, $previous); ?>

Пример

Давайте выбросим исключение в контроллере, если клиент запрашивает формат 'application/xml', который мы не поддерживаем:

<?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\NotAcceptableHttpException; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(Request $request): Response { $format = $request->getPreferredFormat(); if ($format === 'xml') { throw new NotAcceptableHttpException('XML format is not supported'); } return new Response('article'); } } ?>

Результат выполнения кода для запроса с заголовком Accept: application/xml:

<h1>406 Not Acceptable</h1> <p>XML format is not supported</p>

Пример

Давайте используем исключение для проверки поддерживаемых форматов через заголовок Accept:

<?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\NotAcceptableHttpException; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/{id}', name: 'article_show')] public function show(int $id, Request $request): Response { $accept = $request->headers->get('Accept'); if ($accept === 'application/pdf') { throw new NotAcceptableHttpException('PDF format is not available'); } return new Response('article ' . $id); } } ?>

Результат выполнения кода для адреса /article/5 с заголовком Accept: application/pdf:

<h1>406 Not Acceptable</h1> <p>PDF format is not available</p>

Пример

Давайте перехватим исключение и вернём кастомный ответ с другим статусом:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/check', name: 'article_check')] public function check(): Response { try { throw new NotAcceptableHttpException('Format not supported'); } catch (NotAcceptableHttpException $e) { return new Response($e->getMessage(), 406); } } } ?>

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

Format not supported

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

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить