Выбор ответа Junior FastAPI и Pydantic спрашивают часто обновлено

Откуда в FastAPI ответ 422

Вопрос

Клиент отправил {"age": "abc"} в эндпоинт с моделью age: int. Что вернёт FastAPI?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 422 с описанием ошибки по полю age. FastAPI валидирует тело через Pydantic до вызова обработчика и при ошибке возвращает 422 со списком ошибок: путь к полю, сообщение, тип.

Варианты ответа

  1. 500 Internal Server Error с трейсбэком Pydantic
  2. 200, а age станет None, раз значение невалидно
  3. 422 с описанием ошибки по полю ageправильный ответ
  4. 400 Bad Request с текстом «invalid body» без деталей

Разбор

FastAPI валидирует тело через Pydantic до вызова обработчика и при ошибке возвращает 422 со списком ошибок: путь к полю, сообщение, тип. Код обработчика не выполняется. Строку "42" Pydantic в обычном (не strict) режиме привёл бы к числу, а "abc" нет. Формат и код ответа можно поменять своим обработчиком RequestValidationError.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.