Короткий ответ
FastAPI построен на Starlette и Pydantic: он поддерживает async и await, автоматически генерирует документацию по стандартам OpenAPI и валидирует данные по аннотациям типов. Flask минималистичен и синхронен, поэтому документацию и валидацию приходится писать вручную.
Как это работает подробнее
Отличия складываются из производительности, поддержки асинхронности и типизации.
- Производительность. FastAPI поверх Starlette заметно быстрее Flask благодаря асинхронной обработке запросов.
- Документация. FastAPI автоматически генерирует интерактивную документацию по стандартам OpenAPI и JSON Schema; в Flask её нет.
- Типизация. Аннотации типов Python дают автодополнение в редакторе, проверку ошибок и более лёгкий рефакторинг.
- Валидация. Модели Pydantic автоматически проверяют данные запросов и ответов, тогда как во Flask валидацию пишут вручную.
Что использовать на практике
- FastAPI. Выбирай, когда важны производительность, асинхронность, автодокументация и валидация.
- Flask. Оставляй для простых синхронных приложений с минимализмом и полным контролем.
- Рост проекта. Если API будет развиваться, FastAPI выгоднее за счёт автодокументации и типов.
Подводные камни
- Синхронные обработчики. Синхронные функции в FastAPI выполняются в пуле потоков, поэтому смешение стилей надо осознавать.
- Экосистема. У Flask больше готовых расширений и примеров, чем у FastAPI.
- Система типов. Корректные Pydantic-модели требуют понимания типов Python.
Как отвечать на собеседовании
- Перечисли ключевые отличия: производительность, async, автодокументация и валидация через Pydantic → покажи, как аннотации типов улучшают разработку → объясни, почему для современного API выберешь FastAPI → упомяни, когда уместнее Flask.