Проект посвящен улучшению Web-приложения для интернет-магазина книг. Работа включала добавление новых сущностей и эндпоинтов, а также внедрение системы авторизации.
Ключевые аспекты:
- Модели: Добавлена модель "Продавцы" и обновлена модель "Книги" для связи с продавцами.
- Эндпоинты: Реализованы эндпоинты для работы с продавцами и книгами, включая авторизацию.
- Авторизация: Введена система на базе JWT-токенов для защиты доступа к операциям.
Результаты:
Разработано расширенное приложение для продажи книг с улучшенной безопасностью и поддержкой регистрации продавцов. Слоистая архитектура обеспечивает легкость масштабирования и обслуживания.
Для удобства и соблюдения принципов чистой архитектуры проект разделён на следующие пакеты:
configurations
— слой для хранения конфигураций, констант, параметров и настроек проекта.models
— слой, предназначенный для описания моделей данных (ORM или Data Classes).routers
— слой, отвечающий за настройку URL-адресов для различных эндпоинтов.schemas
— слой, содержащий схемы Pydantic, который отвечает за сериализацию и валидацию данных.
Python 3.11
FastAPI 0.109.0
в роли основы веб-приложения.SQLAlchemy 2.0.25
иAsyncpg 0.29.0
для работы с базой данных.Pydantic 2.6.1
для валидации данных.Uvicorn 0.27.0.post1
как ASGI сервер.Python-JOSE 3.3.0
иPasslib 1.7.4
для аутентификации и безопасности.Orjson 3.9.12
для работы с JSON.
-
Установите Docker Desktop: https://www.docker.com/products/docker-desktop
-
Клонируйте репозиторий.
-
На основе шаблона
.env.example
создайте свой собственный файл.env
с ключевыми настройками. -
Установите зависимости:
# Установка зависимостей make install_reqs
-
Добавьте в PyCharm созданное в папке
.venv
окружение. -
Запустите приложение:
# Запуск БД Postgres с использованием Docker Compose make up_compose
# Запуск приложения make start
# Остановка и удаление контейнера, образа и сети в Docker make down_compose
-
Перейдите по ссылке, чтобы открыть Документацию API.
Для проверки кода и запуска тестов используйте команды:
# Запуск тестов
make pytest
# Запуск тестов, линтеров и авто-форматирования кода
make tests