FastAPI 1. Инициализация проекта
В этом посте начинаем серию о создании сервиса сокращения ссылок на FastAPI. Рассмотрим ключевые особенности фреймворка и пакетного менеджера Poetry, а также приступим к инициализации проекта и настройке окружения.
Реклама
В одном из прошлых постов я рассказывал о сервисе для сокращения ссылок, который был создан с использованием Django/DRF и Vue.js. Со временем этот проект отошел на второй план из-за других задач, и я совсем про него забыл. Но недавно я решил попробовать что-то новое и вспомнил про lkeep.ru.
В этой серии статей мы будем создавать аналогичный сервис на FastAPI. При этом мы не будем начинать с абсолютного нуля — в качестве ориентира будем использовать уже существующий Django-код. Какие-то части функционала мы реализуем аналогично, а некоторые — совершенно иначе, учитывая особенности FastAPI.
В процессе мы изучим основы работы с FastAPI, построим на нем backend, напишем новый frontend и будем использовать Poetry в качестве пакетного менеджера. Это будет своего рода эксперимент, и я надеюсь, что вы присоединитесь ко мне в этом путешествии по изучению новых технологий и инструментов.
Окружение для разработки
Прежде чем приступить к созданию проекта, давайте определимся с используемым окружением и инструментами. Вот что понадобится:
- Операционная система: Windows 11 или GNU/Linux Debian 12
- Интерпретатор Python: версия 3.12.0
- IDE: PyCharm (но вы можете использовать любую другую, например, VS Code)
- Пакетный менеджер: Poetry, версия 2.0.0
Эти инструменты обеспечат комфортную работу над проектом. Если у вас что-то из списка отличается, не переживайте — большинство шагов можно адаптировать под ваши условия.
Что такое FastAPI?
FastAPI — это современный фреймворк для создания веб-приложений и API на Python, разработанный с фокусом на высокую производительность и удобство разработки. Он использует возможности языка Python и его типизацию для строгой проверки входных данных и автоматической генерации документации.
Ключевые особенности FastAPI:
- Высокая производительность: FastAPI считается одним из самых быстрых фреймворков для создания веб-приложений на Python благодаря использованию Starlette для асинхронной работы и Pydantic для валидации данных.
- Асинхронность: Поддержка асинхронных функций позволяет эффективно обрабатывать запросы в многозадачной среде, что делает приложение более масштабируемым и быстрым.
- Автоматическая документация: FastAPI автоматически генерирует документацию для вашего API, используя стандарты OpenAPI и JSON Schema, что значительно упрощает взаимодействие с API.
- Встроенное тестирование: Фреймворк включает инструменты для написания тестов, что упрощает процесс разработки и повышения качества кода.
- Обширная экосистема: У FastAPI есть широкая экосистема пакетов и инструментов, которые позволяют легко расширять функциональность приложений.
Почему FastAPI?
FastAPI — молодой, но уже быстро развивающийся фреймворк, который всё чаще упоминается в описаниях вакансий, особенно в русскоязычном пространстве. Благодаря встроенной поддержке асинхронности, это отличный выбор для тех, кто хочет углубиться в асинхронное программирование.
Кроме того, рост как специалиста невозможен без освоения новых технологий. Постоянное изучение актуальных и популярных инструментов делает вас более конкурентоспособным на рынке труда и расширяет ваши профессиональные навыки и кругозор. Это позволяет выбирать лучшие инструменты для решения конкретных задач, что всегда повышает эффективность работы.
Что такое Poetry?
Poetry — это инструмент для управления пакетами и зависимостями в Python, который упрощает создание, управление и разработку проектов. Он заменяет такие традиционные инструменты, как pip и setuptools, предоставляя более удобные и мощные средства для работы с проектами.
Возможности Poetry:
- Управление зависимостями: Легкое добавление, удаление и обновление зависимостей проекта. Poetry автоматически создает файл
pyproject.toml
, который содержит все данные о зависимостях. - Выпуск пакетов: Простая публикация пакетов в PyPI и других реестрах, что упрощает распространение вашего кода.
- Создание виртуальных окружений: Poetry автоматически создает и управляет виртуальными окружениями для каждого проекта, что помогает избежать конфликтов между зависимостями разных проектов.
- Автоматическая установка зависимостей: При создании нового проекта или изменении файла
pyproject.toml
Poetry автоматически установит все необходимые зависимости. - Общий формат файла проекта: Все настройки проекта и его зависимости описываются в едином файле
pyproject.toml
, что упрощает работу с проектом и делает его более стандартизированным. - Интеллектуальный кэшинг: Poetry ускоряет установку и обновление пакетов с помощью кэширования зависимостей, что существенно повышает производительность.
- Автоматическое обновление зависимостей: Poetry позволяет автоматически обновлять зависимости до последних версий, что помогает поддерживать проект в актуальном и безопасном состоянии.
Как работать с Poetry?
Установка Poetry
Для установки Poetry выполните одну из команд в зависимости от вашей операционной системы:
- Linux, macOS, Windows (WSL):
curl -sSL https://install.python-poetry.org | python3 -
- Windows PowerShell:
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
Эти команды установят Poetry на вашу систему. После установки вы сможете начать использовать Poetry для управления зависимостями и пакетами Python.
Инициализация проекта
Для создания нового проекта с помощью Poetry откройте терминал, перейдите в нужную директорию и выполните команду:
poetry new test_project
Где test_project
— это имя вашего нового проекта. После выполнения команды будет создана директория test_project
со следующим содержимым:
- Python-пакет
test_project
— в этой папке будет располагаться основной код вашего приложения. - Python-пакет
tests
— для размещения тестов вашего проекта. - Poetry-файл
pyproject.toml
— в этом файле хранятся настройки проекта, его зависимости и другие важные параметры.
Теперь у вас есть основная структура проекта, готовая для дальнейшей разработки.
Добавление пакетов в Poetry
Для того чтобы добавить и установить новый пакет, выполните команду:
poetry add requests
Если нужно установить конкретную версию пакета, используйте команду:
poetry add requests2.13.0
Обратите внимание! В некоторых оболочках терминала, таких как zsh
, могут возникать проблемы с символами в строках. Чтобы избежать ошибок, оберните команду в кавычки:
poetry add "requests2.13.0"
Кроме того, вы можете вручную добавить библиотеку в файл pyproject.toml
в раздел dependencies
:
dependencies = [
"requests>=2.13.0",
]
После этого выполните команду для установки всех зависимостей:
poetry install
Обновление и удаление пакетов
Для обновления пакета используйте команду:
poetry update requests
Чтобы удалить пакет, выполните команду:
poetry remove requests
Создание проекта с FastAPI
Инициализация проекта
Теперь, когда мы обсудили теоретическую часть, давайте перейдем к практике. В удобной директории откройте терминал и выполните команду:
poetry new lkeep
Эта команда создаст директорию с базовыми файлами для нового проекта на Poetry.
Далее откройте созданную директорию в PyCharm. IDE должна автоматически распознать виртуальное окружение проекта. Если этого не произошло, настройте интерпретатор вручную, следуя документации PyCharm.
Затем откройте терминал в IDE и выполните следующие команды для установки зависимостей:
# Устанавливаем FastAPI
poetry add fastapi[standard]
# Устанавливаем ASGI-сервер uvicorn
poetry add uvicorn[standard]
# Если у вас zsh, оберните команду в кавычки
poetry add "fastapi[standard]" "uvicorn[standard]"
Убедитесь, что библиотеки установлены, открыв файл pyproject.toml
и проверив наличие этих элементов в списке dependencies
:
dependencies = [
"fastapi[standard] (>=0.115.6,<0.116.0)",
"uvicorn[standard] (>=0.34.0,<0.35.0)"
]
Простейший код
Теперь давайте напишем простой код и убедимся, что все работает.
Создайте файл main.py
в пакете lkeep
.
Импортируем класс FastAPI
:
from fastapi import FastAPI
Создаем экземпляр класса FastAPI
:
app = FastAPI()
Если вы знакомы с фреймворком Flask, то создание маршрутов вам будет уже знакомо. Создадим GET
маршрут для главной страницы (/
). Далее определим асинхронную функцию index
без аргументов. Внутри функции сразу вернем словарь.
@app.get("/")
async def index():
return {"status": "It's ALIVE!"}
Обо всем этом я расскажу подробнее в следующих постах. Пока же убедимся, что все работает корректно.
Полный код:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def index():
return {"status": "It's ALIVE!"}
Первый запуск
Для запуска проекта выполните следующие команды в терминале:
# Перейдем в директорию с файлом main.py
cd lkeep
# Запустим ASGI-сервер
uvicorn main:app --reload
Запустится локальный сервер, и в терминале отобразится адрес запущенного проекта.
Открыв ссылку http://127.0.0.1:8000/, вы должны увидеть наше сообщение:
{
"status": "It's ALIVE!"
}
Также вы можете открыть автоматически сгенерированную документацию Swagger по адресу http://127.0.0.1:8000/docs. Здесь вы можете выбрать маршрут, нажать "Try it out", а затем "Execute" для просмотра запроса и ответа.
Для остановки сервера нажмите CTRL+C
в терминале.
Заключение
Этот пост был в основном организационным. Мы узнали о FastAPI и Poetry, инициализировали проект и проверили его работоспособность. В следующих постах мы более подробно разберем устройство FastAPI, познакомимся с ORM SQLAlchemy и другими инструментами.
Репозиторий проекта на GitHub: https://github.com/proDreams/lkeep
Репозиторий проекта в "GIT на салфетке": https://git.pressanybutton.ru/proDream/lkeep
Все статьи