FastAPI 1. Инициализация проекта
В этом посте начинаем серию о создании сервиса сокращения ссылок на FastAPI. Рассмотрим ключевые особенности фреймворка и пакетного менеджера Poetry, а также приступим к инициализации проекта и настройке окружения.
Реклама
Приветствую.
В одном из постов я рассказал о сервисе по сокращению ссылок, созданном на 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:
- Высокая производительность: FastAPI считается одним из самых быстрых фреймворков для создания веб-приложений на Python.
- Асинхронность: Поддержка асинхронных функций позволяет эффективно обрабатывать многопоточные и асинхронные запросы.
- Автоматическая документация: FastAPI автоматически генерирует документацию для вашего API, используя стандарты OpenAPI и JSON Schema.
- Встроенное тестирование: Фреймворк включает встроенные тесты, которые можно использовать на различных этапах разработки.
- Обширная экосистема: FastAPI обладает широкой экосистемой пакетов и инструментов для расширения функциональности приложений.
Почему FastAPI?
FastAPI — это молодой и быстро растущий фреймворк, который все чаще упоминается в описаниях вакансий, особенно в русскоязычном пространстве. Благодаря его асинхронности, это отличный выбор для изучения асинхронного программирования.
Кроме того, рост как специалиста невозможен без освоения новых технологий. Постоянное изучение новых и трендовых инструментов делает вас более конкурентоспособным и расширяет ваши навыки и кругозор. Это позволяет выбирать инструменты, которые лучше подходят для решения конкретной задачи.
Что такое Poetry?
Poetry — это менеджер пакетов и зависимостей для Python, который упрощает создание, управление и разработку проектов. Он заменяет pip и setuptools, предоставляя более удобные и мощные инструменты.
Возможности Poetry:
- Управление зависимостями: Простое добавление, удаление и обновление зависимостей проекта.
- Выпуск пакетов: Легкая публикация пакетов в PyPI и других реестрах.
- Создание виртуальных окружений: Автоматическое создание и управление виртуальными окружениями для каждого проекта.
- Автоматическая установка зависимостей: Установка зависимостей при создании нового проекта или изменении файла
pyproject.toml
. - Общий формат файла проекта: Использование файла
pyproject.toml
для описания проекта и его зависимостей. - Интеллектуальный кэшинг: Ускорение установки и обновления пакетов за счет кэширования зависимостей.
- Автоматическое обновление зависимостей: Возможность обновления зависимостей до последних версий для обеспечения безопасности проекта.
Как работать с 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 и другими инструментами.
Все статьи