Учебник FastAPI

FastAPI — это современный, быстрый (высокопроизводительный) веб-фреймворк Python для создания API, специально разработанный для создания RESTful API.

FastAPI использует Python 3.8+ и построен на стандартных аннотациях типов Python, используя Starlette и Pydantic, что обеспечивает автоматическую генерацию документации API и валидацию данных.


Для кого этот урок?

Этот учебник подходит разработчикам, имеющим основы Python. Если вы уже понимаете базовый синтаксис Python и аннотации типов, вы сможете быстро начать работу с FastAPI.


Что нужно знать перед прохождением этого руководства

Прежде чем изучать это руководство, вам нужно понимать некоторые базовые знания о Web иБазовое руководство по Python 3.xЕсли вы не знакомы с методами HTTP-запросов (GET, POST и т. д.), рекомендуется сначала прочитать.Учебник по HTTP。


Возможности FastAPI

FastAPI выделяется среди веб-фреймворков Python, главным образом благодаря следующим особенностям:

ОсобенностиОписание
Высокая производительностьОснован на Starlette и Pydantic, по производительности сопоставим с NodeJS и Go, это один из самых быстрых Python-фреймворков.
Быстрая разработкаСкорость разработки увеличивается примерно на 200%-300%, а стандартные объявления типов обеспечивают валидацию данных и генерацию документации.
Сокращение ошибокСокращает количество человеческих ошибок примерно на 40%, а система типов автоматически выявляет распространённые проблемы.
Автоматическая документацияАвтоматически генерирует интерактивную документацию API (Swagger UI и ReDoc), устраняя необходимость в ручном сопровождении.
ТипобезопасностьОснован на стандартных аннотациях типов Python, обеспечивая полноценное автодополнение и проверку ошибок в редакторах.
Поддержка асинхронностиНативная поддержка async/await, эффективно обрабатывает задачи, интенсивно использующие IO.

Сценарии применения FastAPI

СценарииОписание
Создание бэкендов APIИспользуется для создания RESTful API, поддерживая веб-приложения с разделённым фронтендом и бэкендом.
Архитектура микросервисовЛёгкий и эффективный, подходит в качестве бэкенд-фреймворка для микросервисов.
API для обработки данныхПодходит для сервисов обработки данных, которые принимают и возвращают данные JSON.
Коммуникация в реальном времениПоддерживает WebSocket, подходит для сценариев связи в реальном времени.
Сервисы машинного обученияПозволяет оборачивать обученные модели в API, что удобно для вызова из фронтенда и других сервисов.

Технологический стек FastAPI

FastAPI построен на основе двух ключевых библиотек:

КомпонентыФункцияОписание
StarletteУровень веб-фреймворкаПредоставляет базовые веб-возможности, такие как маршрутизация, middleware и WebSocket; FastAPI напрямую наследуется от Starlette.
PydanticУровень валидации данныхВыполняет валидацию данных, сериализацию и создание документации на основе аннотаций типов Python.
UvicornASGI-серверВысокопроизводительный ASGI-сервер на основе uvloop и httptools, используемый для запуска приложений FastAPI
FastAPI является подклассом Starlette, поэтому можно использовать все возможности Starlette. В то же время FastAPI полностью совместим с Pydantic, включая внешние библиотеки на основе Pydantic ORM (например, SQLModel).

Почему стоит выбрать FastAPI?

Критерий сравненияFastAPIFlaskDjango
ПроизводительностьВысокая (async, ASGI)Средний (sync, WSGI)Средний (sync, WSGI)
Автоматическая документацияВстроенный (Swagger UI + ReDoc)Требует сторонних расширенийТребует сторонних расширений
Валидация типовВстроенный (Pydantic)Требуется ручная реализацияТребуется ручная реализация
Поддержка асинхронностиНативная поддержканужно расширятьподдержка 3.1+
Кривая обученияНизкаяНизкаяПовышенный
Применимый масштабМалые и средние / микросервисымалые и средниеКрупные / Full-stack

Связанные ссылки

РесурсыАдрес
Официальная документация FastAPIhttps://fastapi.tiangolo.com/zh/
Исходный код FastAPIhttps://github.com/tiangolo/fastapi
Документация Starlettehttps://www.starlette.dev/
Документация Pydantichttps://docs.pydantic.dev/
Другие расширения