Я установил очень простую заглушку контроллера Symfony 3.3, основное действие которого выглядит так:

/**
 * @Route("/pair-gallery/{id}")
 */
public function indexAction(Int $id)
{
    $output = [];
    return new JsonResponse($output);
}

Когда я даю ему строку в качестве аргумента в URL-адресе (а не целое число), я получаю ошибку 500. Это не ужасно, но я не совсем этого хочу.

Как мне сказать Symfony, чтобы вместо этого отправлял ответный код 400 («Плохой запрос»)?

12
Patrick 13 Мар 2018 в 12:29

2 ответа

Лучший ответ

Вы можете просто создать исключение, которое автоматически преобразуется в ответ HTTP 400:

throw new BadRequestHttpException('Message');

Если вы хотите указать конкретный код ошибки http (возможно, вы хотите выдать непонятный код ошибки, например 418), вы можете передать его в качестве третьего параметра:

throw new BadRequestHttpException('Message', null, 418);
7
FMK 9 Мар 2019 в 17:07

Вы можете указать код возврата следующим образом:

return new JsonResponse($output, 400);
5
Alessandro Minoccheri 13 Мар 2018 в 09:33