Cat

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

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

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

Приветствую.

В одном из постов я рассказал о сервисе по сокращению ссылок, созданном на Django/DRF и Vue.js. Со временем я совсем забыл об этом проекте из-за множества других дел. Но недавно я решил, что пора изучить что-то новое, и вспомнил про lkeep.ru.

В этой серии постов мы будем создавать сервис по сокращению ссылок на FastAPI. Хотя мы не начнем с полного нуля, ведь у меня уже есть Django-код, который можно использовать в качестве ориентира. Некоторые вещи мы будем реализовывать аналогично, а другие — совершенно по-другому.

Мы познакомимся с FastAPI, создадим на нем backend, напишем новый frontend, и будем использовать Poetry в качестве пакетного менеджера. Весь процесс будет экспериментальным, и я надеюсь, что вместе с вами мы сможем освоить новые навыки и технологии.

 

Окружение для разработки

Прежде чем приступить к созданию проекта, опишу используемое окружение и инструменты:

  • Операционная система: Windows 11
  • Интерпретатор Python: версия 3.12.0
  • IDE: PyCharm (подойдет любая другая, например, VSCode)
  • Пакетный менеджер: Poetry версия 1.8.3

 

Что такое FastAPI?

FastAPI — это современный фреймворк для создания веб-приложений и API на Python. Он был разработан с целью обеспечить высокую производительность и удобство для разработчиков. FastAPI использует возможности языка Python и его типы данных для строгой проверки входных данных и автоматической генерации документации.

 

Ключевые особенности FastAPI:

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

 

Почему FastAPI?

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

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

 

Что такое Poetry?

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

 

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

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

 

Как работать с 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 new test_project

 

Где test_project — имя нового проекта. После выполнения команды будет создана директория test_project со следующим содержимым:

  • Python-пакет test_project — здесь будет располагаться код приложения.
  • Python-пакет tests — для тестов проекта.
  • Poetry-файл pyproject.toml — содержит настройки проекта и зависимости.

 

Добавление пакетов в Poetry

Для добавления и установки нового пакета выполните команду:

poetry add requests

 

Если нужно указать конкретную версию пакета:

poetry add requests==1.0.0

 

Вы также можете добавить библиотеку вручную в файл pyproject.toml в блоке [tool.poetry.dependencies]:

requests = "^1.0.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]

 

Убедитесь, что библиотеки установлены, открыв файл pyproject.toml и проверив наличие блоков [tool.poetry.dependencies] с установленными библиотеками.

 

Простейший код

Теперь давайте напишем простой код и проверим, что все работает.

Создайте файл 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 и другими инструментами.

Автор

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

    Реклама