Простой API магазина на Laravel, запущенный в Docker контейнерах. Проект разделен на 3 основные части
collection- коллекция запросов для Postman;deploy- конфигурация Docker для контейнеризации;project- Laravel-приложение.
API представляет собой обычный интернет магазин, в котором можно зарегистрироваться как клиент, добавить товары в корзину и оформить заказ.
Администратор может добавить товары, изменять их и удалить их.
Используемые контейнеры:
- php:8.4.12-fpm;
- nginx;
- PostgreSQL;
- PGAdmin;
- redis.
Установите Docker на свою систему и убедитесь в его работоспособности.
- Скопируйте файлы из deploy в project
- Создайте файл
.envи скопируйте содержимое из.env.example(.env редактирование) - В терминале в папке project пропишите:
docker-compose up -d, чтобы создать контейнер и запустить его;Docker exec laravel-container cp .env.example .env;Docker exec laravel-container composer install;Docker exec laravel-container php artisan key:generate;Docker exec laravel-container php artisan migrate; После выполнения этих команд, вы можете перейти наhttp://localhost, чтобы убедиться, что все заработало. Вы увидите стартовую страницу Laravel.
По умолчанию используется PostgreSQL в контейнере.
Для работы с API вы должны отправлять запросы в виде JSON. Для этого используются такие приложения, как Postman и Bruno.
Чтобы автоматическая запись токена пользователя работала, создайте окружение (или дополните) с переменной TOKEN и используйте это окружение.
Коллекция запросов Postman вы можете найти в папке collection.
Для Bruno импортируйте, однако для автоматизации добавления значения токена придется самостоятельно его добавлять в окружение и убрать все скрипты в запросах
-
Пользователи:
php artisan db:seed --class=UserSeeder- Клиент
- 'fio': 'Test Client'
- 'email': 'user@shop.ru'
- 'password': 'password'
- Администратор
- 'fio': 'Test Admin'
- 'email': 'admin@shop.ru'
- 'password': 'password'
- Клиент
-
Товары: php artisan db:seed --class=ProductSeeder
Создайте нового пользователя с помощью json запроса, и вы должны получить id пользователя.
Пропишите в терминале:
Docker exec laravel-container php artisan app:adminstatus {id пользователя}, {0 - клиент, 1 - администратор}
Существует 3 роли: гость, клиент, администратор
Дальше написаны возможности для каждой роли, а также запрос из postman коллекции (в папке collection) в виде названия этого запроса
-
Гость может:
-
просматривать товары
product_get_all -
увидеть конкретный товар
product_show -
зарегистрироваться
sign_up -
войти в существующий аккаунт
login
-
-
Клиент может:
-
то же самое, что и гость (вероятно, регистрироваться заново не нужно будет, но это возможно)
-
выйти из аккаунта
logout -
изменить профиль
update_profile -
добавить товары в корзину
cart_add_product -
увидеть, что в корзине
cart_get -
удалить товар из корзины
cart_delete -
оформить заказ (корзина будет очищена)
create_order -
увидеть историю заказов
get_orders
-
-
Администратор может:
- то же самое, что и клиент
- добавить товар
product_add - изменить товар
product_update - удалить товар
product_delete
- то же самое, что и клиент