Тестовый проект с продуктами и категориями на базе Laravel 12 и Postgres 16. Для запуска необходимо установить Docker.
Клонируйте репозиторий на ваш сервер или локальную машину:
git clone https://github.com/Lextonian/products.git
cd productsСкопируйте файл .env.example в .env:
cp .env.example .envОтредактируйте файл .env, добавив следующие обязательные параметры:
DB_CONNECTION=pgsql
DB_HOST=pgsql
DB_PORT=5432
DB_DATABASE=your_database_name
DB_USERNAME=your_database_user
DB_PASSWORD=your_database_password
- Параметры базы данных (
DB_*) настройте в соответствии с вашей конфигурацией.
Установите зависимости PHP с помощью Composer через Docker:
docker run --rm -u "$(id -u):$(id -g)" -v "$(pwd):/var/www/html" -w /var/www/html laravelsail/php83-composer:latest composer install./vendor/bin/sail upДля удобства можно добавить алиас
echo "alias sail='./vendor/bin/sail'" >> ~/.bashrc && source ~/.bashrcВ таком случае команда сокращается до sail. Например, sail up
Сгенерируйте ключ приложения Laravel:
./vendor/bin/sail artisan key:generate./vendor/bin/sail artisan migrateДля быстрого запуска рекомендуется запустить:
./vendor/bin/sail artisan migrate:fresh --seedДля тестирования рекомендуется использоваться Postman и импортировать коллекцию. Файл:
productsPostman.json
в корневом каталоге репозитория. Там предоставлены все маршруты приложения
В переменных коллекция при необходимости можно поменять baseURL. По
уполчанию указан http://localhost. Также для работы с админскими роутами необходимо в коллекции запустить запрос login (данные уже подставлены из сидера) или зарегистироваться нового пользователя register. Токен auth_token будет подставлен автоматически.
Используется Laravel Sanctum для админских маршрутов. Для упрощения не была введена роль "Админ". Для авторизации необходимо сначала отправить запрос по {{baseURL}}/api/auth/register и в последствии {{baseURL}}/api/auth/login. Далее необходимо вставить токен в заголовок Authorization: Bearer {{token}} перед отправкой запроса.
| Метод | Эндпоинт | Действие |
|---|---|---|
POST |
api/auth/login |
login |
POST |
api/auth/logout |
logout |
POST |
api/auth/register |
register |
| Метод | Эндпоинт | Действие |
|---|---|---|
GET |
api/public/product_categories |
categoriesTree |
GET |
api/public/product_categories_with_products |
categoriesWithProducts |
GET |
api/public/products |
products |
GET |
api/public/products/{product} |
product |
| Метод | Эндпоинт | Действие |
|---|---|---|
GET/HEAD |
api/admin/product_categories |
index |
POST |
api/admin/product_categories |
store |
GET/HEAD |
api/admin/product_categories/{product_category} |
show |
PUT/PATCH |
api/admin/product_categories/{product_category} |
update |
DELETE |
api/admin/product_categories/{product_category} |
destroy |
| Метод | Эндпоинт | Действие |
|---|---|---|
GET/HEAD |
api/admin/products |
index |
POST |
api/admin/products |
store |
GET/HEAD |
api/admin/products/{product} |
show |
PUT/PATCH |
api/admin/products/{product} |
update |
DELETE |
api/admin/products/{product} |
destroy |