REST API для интернет-магазина, позволяющее управлять пользователями, товарами и заказами.
ShopAPI - это полнофункциональный REST API для интернет-магазина, построенный на Django и Django REST Framework. Сервис поддерживает регистрацию и авторизацию пользователей, CRUD-операции с товарами и заказами, а также предоставляет автоматическую документацию API.
- Управление пользователями: регистрация, авторизация, профиль пользователя
- Управление товарами: CRUD операции, категории, изображения, отзывы
- Управление заказами: оформление заказов, корзина покупок, отслеживание статуса
- Поиск и фильтрация: поиск товаров, фильтрация по категориям и цене
- JWT авторизация: безопасная аутентификация с JWT токенами
- API документация: автоматическая генерация Swagger/OpenAPI документации
- Python 3.12
- Django 4.2.7 - веб-фреймворк
- Django REST Framework 3.14.0 - для создания API
- PostgreSQL - база данных
- Docker & Docker Compose - контейнеризация
- JWT - авторизация
- Swagger/OpenAPI - документация API
- Клонируйте репозиторий:
git clone <repository-url>
cd shopapi
- Создайте виртуальное окружение:
python -m venv venv
source venv/Scripts/activate # Windows
# или
source venv/bin/activate # Linux/Mac
- Установите зависимости:
pip install -r requirements.txt
- Создайте файл
.env
на основе.env.example
:
cp .env.example .env
-
Настройте базу данных PostgreSQL и обновите настройки в
.env
-
Выполните миграции:
python manage.py migrate
- Создайте суперпользователя:
python manage.py createsuperuser
- Запустите сервер:
python manage.py runserver
- Запустите проект с помощью Docker Compose:
docker-compose up --build
POST /api/auth/register/
- Регистрация пользователяPOST /api/auth/login/
- Вход в системуPOST /api/auth/logout/
- Выход из системыGET /api/auth/profile/
- Получение профиля пользователяPUT /api/auth/update/
- Обновление данных пользователяPOST /api/auth/change-password/
- Смена пароля
GET /api/products/categories/
- Список категорийGET /api/products/products/
- Список товаровGET /api/products/products/{id}/
- Детальная информация о товареGET /api/products/products/search/
- Поиск товаровPOST /api/products/products/create/
- Создание товара (админ)PUT /api/products/products/{id}/update/
- Обновление товара (админ)DELETE /api/products/products/{id}/delete/
- Удаление товара (админ)
GET /api/products/products/{product_id}/reviews/
- Список отзывов товараPOST /api/products/products/{product_id}/reviews/create/
- Создание отзыва
GET /api/orders/orders/
- Список заказов пользователяGET /api/orders/orders/{id}/
- Детальная информация о заказеPOST /api/orders/orders/create/
- Создание заказаPOST /api/orders/orders/create-from-cart/
- Создание заказа из корзины
GET /api/orders/cart/
- Получение корзиныPOST /api/orders/cart/add/
- Добавление товара в корзинуPUT /api/orders/cart/items/{item_id}/update/
- Обновление количества товараDELETE /api/orders/cart/items/{item_id}/remove/
- Удаление товара из корзиныDELETE /api/orders/cart/clear/
- Очистка корзины
После запуска сервера документация API доступна по адресам:
- Swagger UI:
http://localhost:8000/api/docs/
- ReDoc:
http://localhost:8000/api/redoc/
- OpenAPI Schema:
http://localhost:8000/api/schema/
Административная панель Django доступна по адресу http://localhost:8000/admin/
shopapi/
├── accounts/ # Управление пользователями
├── products/ # Управление товарами
├── orders/ # Управление заказами и корзиной
├── shopapi/ # Основные настройки Django
├── docs/ # Документация
├── media/ # Медиа файлы
├── staticfiles/ # Статические файлы
├── requirements.txt # Python зависимости
├── Dockerfile # Docker конфигурация
├── docker-compose.yml # Docker Compose конфигурация
└── .env.example # Пример переменных окружения
Создайте файл .env
на основе .env.example
:
DEBUG=True
SECRET_KEY=your-secret-key-here
DB_NAME=shopapi
DB_USER=postgres
DB_PASSWORD=postgres
DB_HOST=localhost
DB_PORT=5432
ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0
CORS_ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
MIT License