Почему FastAPI и как он работает
Вопрос
Почему для нового сервиса часто выбирают FastAPI и что он делает за вас?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Валидация и сериализация по аннотациям через Pydantic
Автоматическая OpenAPI-документация
Dependency injection через Depends
ASGI и async из коробки, но и sync-обработчики в пуле потоков
Минимум магии, но нет встроенных ORM, админки, миграций
Сравнение с Django: что брать для какого проекта
Что могут спросить следом
- Что вы возьмёте для ORM и миграций в проекте на FastAPI?
- Когда вы выберете Django, а не FastAPI?
Разбор
Образцовый ответ: «FastAPI превращает аннотации типов в работу: из сигнатуры обработчика и Pydantic-моделей он строит разбор параметров, валидацию с понятными ошибками 422, сериализацию ответа по response_model и OpenAPI-схему, по которой сразу есть интерактивная документация. Зависимости через Depends дают удобный способ получить сессию БД, текущего пользователя, настройки и подменять всё это в тестах. Он работает поверх ASGI, поэтому асинхронный код и WebSocket доступны из коробки, а синхронные обработчики он выполнит в пуле потоков. Из минусов: это микрофреймворк, ORM, миграции, админку, авторизацию собираешь сам, обычно SQLAlchemy 2.0 и Alembic. Поэтому FastAPI беру для API-сервисов, микросервисов, ML-инференса, интеграций. Если нужен классический продукт с админкой, сложной моделью данных и быстрым стартом, Django с DRF даст больше готового».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «FastAPI и Pydantic»
- Откуда в FastAPI ответ 422
- Annotated в параметрах FastAPI
- BackgroundTasks или очередь задач
- httpx.AsyncClient на каждый запрос
- Разбор и проверка query-параметров
- Граф зависимостей с кешем на запрос
- Подмена зависимостей в тестах
- Сколько раз вызывается зависимость