# README
Простой REST API Сервер
Добро пожаловать в репозиторий нашего простого REST API сервера. Этот сервер представляет собой базовую реализацию RESTful веб-сервиса, предназначенного для работы с артикулами и пользовательскими данными.
Основные Функции
Сервер предоставляет следующие endpoints для взаимодействия:
- GET /api/v1/articles: Получение всех статей из базы данных.
- POST /api/v1/articles: Загрузка статьи в базу данных через API.
- GET /api/v1/articles/{id}: Получение статьи из базы данных по ID.
- DELETE /api/v1/articles/{id}: Удаление статьи из базы данных по ID.
- POST /api/v1/user/register: Регистрация пользователя.
- POST /api/v1/user/auth: Получение JWT токена для пользователя.
Зависимости
Проект использует следующие зависимости:
-
PostgreSQL драйвер:
go get -u github.com/lib/pq
-
JWT Middleware:
go get -u github.com/auth0/go-jwt-middleware
-
Обработка JWT:
go get -u github.com/form3tech-oss/jwt-go
Миграции Базы Данных
Для управления миграциями используется система миграций. Создание миграционного файла для структуры пользователей можно выполнить следующим образом:
migrate create -ext sql -dir migrations UsersCreationMigration
Работа Сервера
- При отправке запроса на POST /api/v1/articles с JSON-телом, сервер через промежуточное ПО (middleware) проверяет права доступа пользователя. В случае успешной авторизации, сервер обрабатывает запрос и добавляет информацию о статье в базу данных.
Инструкции По Запуску
- Убедитесь, что все зависимости установлены.
- Запустите сервер командой go build -v ./cmd/api или командой make.
Настройка PostgreSQL с Docker
Для работы с PostgreSQL можно использовать Docker. Ниже приведены команды для управления базой данных:
- Запуск PostgreSQL
docker run --name postgres16 -p 5434:5434 -e POSTGRES_USER=admin -e POSTGRES_PASSWORD=admin -d postgres:16-alpine
- Создание Базы Данных
docker exec -it postgres16 createdb --username=admin --owner=admin test_db
- Удаление Базы Данных
docker exec -it postgres16 dropdb --force test_db
- Применение Миграций
migrate -path migration -database "postgres://localhost:5434/restapi?sslmode=disable&user=admin&password=admin" -verbose up
- Откат Миграций
migrate -path migration -database "postgres://localhost:5434/restapi?sslmode=disable&user=admin&password=admin" -verbose down
Сборка и Запуск
Указанные команды .PHONY используются для упрощения работы с базой данных и миграциями. Выполнение этих команд поможет вам управлять состоянием базы данных и применять необходимые изменения.
Заключение
Этот проект является отличным стартовым пунктом для разработки и понимания работы REST API серверов. Он включает основные операции CRUD и работу с JWT для аутентификации и авторизации.