Выбор ответа Junior FastAPI и Pydantic обновлено
Annotated в параметрах FastAPI
Вопрос
Зачем пишут user: Annotated[User, Depends(current_user)] вместо user: User = Depends(current_user)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Тип и метаданные разделены, сигнатура корректна, а зависимость легко переиспользовать. Annotated из typing прикрепляет к типу метаданные (Depends, Query, Path), не подменяя значение по умолчанию.
Варианты ответа
- Тип и метаданные разделены, сигнатура корректна, а зависимость легко переиспользоватьправильный ответ
- Без
Annotatedзависимость не будет вызвана, если у параметра нет значения по умолчанию - Это ускоряет запросы: FastAPI кеширует граф зависимостей по аннотациям типов
Annotatedнужен только для query-параметров, а дляDependsон ничего не меняет
Разбор
Annotated из typing прикрепляет к типу метаданные (Depends, Query, Path), не подменяя значение по умолчанию. Можно объявить CurrentUser = Annotated[User, Depends(current_user)] и писать user: CurrentUser везде. Документация FastAPI рекомендует этот стиль, но старый тоже работает. На скорость он не влияет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «FastAPI и Pydantic»
- httpx.AsyncClient на каждый запрос
- Разбор и проверка query-параметров
- Граф зависимостей с кешем на запрос
- Подмена зависимостей в тестах
- Сколько раз вызывается зависимость
- Эндпоинт FastAPI с моделью и зависимостью
- Откуда FastAPI берёт параметры
- Валидаторы Pydantic v2