Categorygithub.com/arvph/ServerAndDB
module
0.0.0-20240305115022-55c4be7e9906
Repository: https://github.com/arvph/serveranddb.git
Documentation: pkg.go.dev

# 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 для аутентификации и авторизации.

# Packages

No description provided by the author
No description provided by the author