Выбор ответа Junior FastAPI и Pydantic спрашивают часто обновлено
Откуда в FastAPI ответ 422
Вопрос
Клиент отправил {"age": "abc"} в эндпоинт с моделью age: int. Что вернёт FastAPI?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 422 с описанием ошибки по полю age. FastAPI валидирует тело через Pydantic до вызова обработчика и при ошибке возвращает 422 со списком ошибок: путь к полю, сообщение, тип.
Варианты ответа
- 500 Internal Server Error с трейсбэком Pydantic
- 200, а
ageстанетNone, раз значение невалидно - 422 с описанием ошибки по полю
ageправильный ответ - 400 Bad Request с текстом «invalid body» без деталей
Разбор
FastAPI валидирует тело через Pydantic до вызова обработчика и при ошибке возвращает 422 со списком ошибок: путь к полю, сообщение, тип. Код обработчика не выполняется. Строку "42" Pydantic в обычном (не strict) режиме привёл бы к числу, а "abc" нет. Формат и код ответа можно поменять своим обработчиком RequestValidationError.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «FastAPI и Pydantic»
- BackgroundTasks или очередь задач
- httpx.AsyncClient на каждый запрос
- Разбор и проверка query-параметров
- Граф зависимостей с кешем на запрос
- Подмена зависимостей в тестах
- Сколько раз вызывается зависимость
- Эндпоинт FastAPI с моделью и зависимостью
- Откуда FastAPI берёт параметры