Исключение BadRequestHttpException
Исключение BadRequestHttpException выбрасывается,
когда клиент отправил некорректный запрос: неверные
параметры, отсутствующие обязательные поля, битый JSON.
Наследуется от HttpException и автоматически
устанавливает статус-код ответа 400. Первым параметром
принимает сообщение об ошибке, вторым - предыдущее
исключение, третьим - заголовки ответа.
Синтаксис
<?php
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
throw new BadRequestHttpException(
string $message = '',
Throwable $previous = null,
int $code = 0,
array $headers = []
);
?>
Пример
Давайте выбросим исключение, если обязательный
параметр id не передан в запросе:
<?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\BadRequestHttpException;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_show')]
public function show(Request $request): Response
{
$id = $request->query->get('id');
if ($id === null) {
throw new BadRequestHttpException('Parameter "id" is required');
}
return new Response('article ' . $id);
}
}
?>
Результат выполнения кода для адреса /article?id=5:
article 5
Пример
Давайте обработаем некорректный JSON в теле запроса и выбросим исключение:
<?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\BadRequestHttpException;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/create', name: 'article_create', methods: ['POST'])]
public function create(Request $request): Response
{
$data = json_decode($request->getContent(), true);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new BadRequestHttpException('Invalid JSON payload');
}
return new Response('created');
}
}
?>
Результат выполнения кода при некорректном JSON:
{"status":400,"error":"Bad Request","message":"Invalid JSON payload"}
Смотрите также
-
класс
HttpException,
базовый класс для HTTP-исключений -
исключение
NotFoundHttpException,
которое возвращает статус 404 -
исключение
AccessDeniedHttpException,
которое возвращает статус 403 -
интерфейс
HttpExceptionInterface,
который реализуют HTTP-исключения