Skip to content

REST API для управления пользователями и их заказами на Go с использованием PostgreSQL, GORM, Gin и JWT-авторизации

License

Notifications You must be signed in to change notification settings

iwtcode/user-order-api

Repository files navigation

user-order-api

Go GORM Gin JWT PostgreSQL Docker REST API Swagger

REST API для управления пользователями и их заказами на Go с использованием PostgreSQL, GORM, Gin и JWT-авторизации


Основные эндпоинты

Защищено — требуется JWT-токен в заголовке запроса Authorization: Bearer <token>

Метод Эндпоинт Описание Авторизация
POST /auth/login Авторизация
🔓
POST /users Создание пользователя
🔓
GET /users Получение списка пользователей
🔒
GET /users/{id} Получение пользователя по ID
🔒
PUT /users/{id} Обновление пользователя
🔒
DELETE /users/{id} Удаление пользователя
🔒
POST /users/{user_id}/orders Создание заказа для пользователя
🔒
GET /users/{user_id}/orders Получение списка заказов пользователя
🔒

Полная документация — Swagger UI

Быстрый старт

🐋 Запуск через Docker Compose (рекомендуется)

1.1. Установите и запустите Docker

Требуется установленный Docker и Docker Compose

1.2. Создайте файл .env и настройте переменные окружения (Опционально)

SERVER_PORT=8080            # Порт, на котором запускается сервер
DB_HOST=localhost           # Адрес сервера базы данных PostgreSQL
DB_PORT=5432                # Порт базы данных PostgreSQL
DB_USER=postgres            # Имя пользователя для подключения к БД
DB_PASSWORD=db-password     # Пароль пользователя для подключения к БД
DB_NAME=user_order_api      # Имя базы данных
DB_SSLMODE=disable          # Режим SSL для подключения к БД
JWT_SECRET=your-secret-key  # Секретный ключ для подписи JWT
JWT_EXPIRATION=24h          # Время жизни токена (например, 24h)
GIN_MODE=debug              # Режим работы Gin (debug/release)
LOG_FILE=logs/app.log       # Путь к файлу логов

1.3. Запустите построение образа Docker

docker compose up -d --build

1.4. Запустите приложение

docker compose up

Дополнительно. Смена переменных окружения (очистка базы данных и создание новой) / При непредвиденных ошибках

docker compose down
docker volume rm user-order-api_db-data
docker compose up -d --build

📦 Локальный запуск без Docker

2.1. Установите Golang и PostgreSQL

Требуется установленный Golang (1.24.2) и PostgreSQL

2.2. Создайте файл .env и настройте переменные окружения (Обязательно)

SERVER_PORT=8080            # Порт, на котором запускается сервер
DB_HOST=localhost           # Адрес сервера базы данных PostgreSQL
DB_PORT=5432                # Порт базы данных PostgreSQL
DB_USER=postgres            # Имя пользователя для подключения к БД
DB_PASSWORD=db-password     # Пароль пользователя для подключения к БД
DB_NAME=user_order_api      # Имя базы данных
DB_SSLMODE=disable          # Режим SSL для подключения к БД
JWT_SECRET=your-secret-key  # Секретный ключ для подписи JWT
JWT_EXPIRATION=24h          # Время жизни токена (например, 24h)
GIN_MODE=debug              # Режим работы Gin (debug/release)
LOG_FILE=logs/app.log       # Путь к файлу логов

2.3. Запустите установщик (через bash/git bash)

./setup.sh

2.4. Запустите приложение

./server.exe

или

go run cmd/main.go

🛠️ Тестирование

go test -v ./internal/tests

📂 Структура проекта

user-order-api/
├── cmd/                    # Точка входа в приложение
├── internal/               # Внутренние пакеты приложения
│   ├── config/             # Конфигурация приложения
│   ├── handlers/           # HTTP-обработчики (контроллеры)
│   ├── middleware/         # Промежуточные обработчики (обёртки)
│   ├── models/             # Описания моделей данных (структуры для БД)
│   ├── repository/         # Слой доступа к данным (репозитории)
│   ├── services/           # Бизнес-логика (сервисы)
│   ├── utils/              # Вспомогательные функции и утилиты
│   └── tests/              # Тесты
├── migrations/             # SQL-миграции
├── docs/                   # Документация API
├── go.mod                  # Файл зависимостей Go-модулей
├── go.sum                  # Контрольные суммы зависимостей
├── LICENSE                 # Лицензия проекта
├── README.md               # Основная документация и инструкции по запуску
├── setup.sh                # Установщик миграций и приложения
├── Dockerfile              # Dockerfile для сборки контейнера приложения
└── docker-compose.yml      # Docker Compose для запуска приложения и БД

About

REST API для управления пользователями и их заказами на Go с использованием PostgreSQL, GORM, Gin и JWT-авторизации

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published