Cat

FastAPI 1. Инициализация проекта

В этом посте начинаем серию о создании сервиса сокращения ссылок на FastAPI. Рассмотрим ключевые особенности фреймворка и пакетного менеджера Poetry, а также приступим к инициализации проекта и настройке окружения.

Сервис на FastAPI proDream 29 Август 2024 Просмотров: 595

В одном из прошлых постов я рассказывал о сервисе для сокращения ссылок, который был создан с использованием 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:

  1. Высокая производительность: FastAPI считается одним из самых быстрых фреймворков для создания веб-приложений на Python благодаря использованию Starlette для асинхронной работы и Pydantic для валидации данных.
  2. Асинхронность: Поддержка асинхронных функций позволяет эффективно обрабатывать запросы в многозадачной среде, что делает приложение более масштабируемым и быстрым.
  3. Автоматическая документация: FastAPI автоматически генерирует документацию для вашего API, используя стандарты OpenAPI и JSON Schema, что значительно упрощает взаимодействие с API.
  4. Встроенное тестирование: Фреймворк включает инструменты для написания тестов, что упрощает процесс разработки и повышения качества кода.
  5. Обширная экосистема: У FastAPI есть широкая экосистема пакетов и инструментов, которые позволяют легко расширять функциональность приложений.

 

Почему FastAPI?

FastAPI — молодой, но уже быстро развивающийся фреймворк, который всё чаще упоминается в описаниях вакансий, особенно в русскоязычном пространстве. Благодаря встроенной поддержке асинхронности, это отличный выбор для тех, кто хочет углубиться в асинхронное программирование.

Кроме того, рост как специалиста невозможен без освоения новых технологий. Постоянное изучение актуальных и популярных инструментов делает вас более конкурентоспособным на рынке труда и расширяет ваши профессиональные навыки и кругозор. Это позволяет выбирать лучшие инструменты для решения конкретных задач, что всегда повышает эффективность работы.


 

Что такое Poetry?

Poetry — это инструмент для управления пакетами и зависимостями в Python, который упрощает создание, управление и разработку проектов. Он заменяет такие традиционные инструменты, как pip и setuptools, предоставляя более удобные и мощные средства для работы с проектами.

 

Возможности Poetry:

  1. Управление зависимостями: Легкое добавление, удаление и обновление зависимостей проекта. Poetry автоматически создает файл pyproject.toml, который содержит все данные о зависимостях.
  2. Выпуск пакетов: Простая публикация пакетов в PyPI и других реестрах, что упрощает распространение вашего кода.
  3. Создание виртуальных окружений: Poetry автоматически создает и управляет виртуальными окружениями для каждого проекта, что помогает избежать конфликтов между зависимостями разных проектов.
  4. Автоматическая установка зависимостей: При создании нового проекта или изменении файла pyproject.toml Poetry автоматически установит все необходимые зависимости.
  5. Общий формат файла проекта: Все настройки проекта и его зависимости описываются в едином файле pyproject.toml, что упрощает работу с проектом и делает его более стандартизированным.
  6. Интеллектуальный кэшинг: Poetry ускоряет установку и обновление пакетов с помощью кэширования зависимостей, что существенно повышает производительность.
  7. Автоматическое обновление зависимостей: 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

Автор

    Нет комментариев

    Реклама