Skip to content

RESTful API на Go для интернет-магазина с управлением пользователями, продуктами, категориями, заказами и комментариями. Использует PostgreSQL, Redis, JWT-аутентификацию и Prometheus для мониторинга. Интерактивная документация доступна через Swagger

License

Notifications You must be signed in to change notification settings

alex-pyslar/petelka-api

Repository files navigation

Petelka API

Petelka API - это RESTful API для управления пользователями, продуктами, категориями, заказами и комментариями в интернет-магазине. Проект построен на языке Go с использованием современных инструментов и библиотек для обеспечения высокой производительности и масштабируемости. API развернут и доступен по адресу https://api.petelka.velesoft.ru, а интерактивная документация доступна через Swagger UI по адресу https://api.petelka.velesoft.ru/swagger/index.html.

Технологии

  • Язык программирования: Go
  • Фреймворк маршрутизации: Gorilla Mux
  • Базы данных:
    • PostgreSQL (основное хранилище)
    • Redis (кэширование)
  • Логирование: Собственный логгер
  • Мониторинг: Prometheus
  • Документация API: Swagger (OpenAPI)
  • Аутентификация: JWT

Основные возможности

  • Регистрация и авторизация пользователей
  • Управление продуктами (CRUD операции)
  • Управление категориями (CRUD операции)
  • Создание и управление заказами
  • Создание комментариев к продуктам
  • Поиск продуктов
  • Разграничение доступа (публичные, защищенные и административные маршруты)

Установка

Предварительные требования

  • Go (версия 1.16 или выше)
  • PostgreSQL
  • Redis
  • Git

Шаги установки

  1. Клонируйте репозиторий:
git clone https://github.com/alex-pyslar/petelka-api.git
cd petelka-api
  1. Установите зависимости:
go mod download
  1. Настройте переменные окружения: Создайте файл .env в корне проекта со следующими переменными:
DB_HOST=localhost
DB_PORT=5432
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=petelka_db
REDIS_ADDR=localhost:6379
REDIS_PASSWORD=
REDIS_DB=0
JWT_SECRET=your_jwt_secret

Запуск проекта

  1. Скомпилируйте и запустите сервер:
go run main.go
  1. Локально сервер будет доступен по адресу http://localhost:8080. Для доступа к развернутому API используйте https://api.petelka.velesoft.ru.

Документация API

Документация API доступна через Swagger UI по адресу: https://api.petelka.velesoft.ru/swagger/index.html. Swagger предоставляет интерактивный интерфейс для тестирования всех доступных эндпоинтов API.

Эндпоинты

Публичные маршруты

  • POST /api/auth/register - Регистрация нового пользователя
  • POST /api/auth/login - Авторизация пользователя
  • GET /api/products - Список всех продуктов
  • GET /api/products/search - Поиск продуктов
  • GET /api/products/{id} - Получение информации о продукте
  • GET /api/categories - Список всех категорий
  • GET /api/categories/{id} - Получение информации о категории

Защищенные маршруты (требуется авторизация)

  • POST /api/comments - Создание комментария
  • POST /api/orders - Создание заказа

Административные маршруты (требуется роль администратора)

  • POST /api/products - Создание продукта
  • PUT /api/products/{id} - Обновление продукта
  • DELETE /api/products/{id} - Удаление продукта
  • POST /api/categories - Создание категории
  • PUT /api/categories/{id} - Обновление категории
  • DELETE /api/categories/{id} - Удаление категории
  • GET /api/users - Список всех пользователей
  • PUT /api/users/{id} - Обновление пользователя
  • DELETE /api/users/{id} - Удаление пользователя

Мониторинг

Метрики Prometheus доступны по адресу:

http://localhost:8080/metrics

Для развернутого сервера: https://api.petelka.velesoft.ru/metrics

Разработка

Для генерации Swagger документации используйте:

swag init

Лицензия

MIT License

About

RESTful API на Go для интернет-магазина с управлением пользователями, продуктами, категориями, заказами и комментариями. Использует PostgreSQL, Redis, JWT-аутентификацию и Prometheus для мониторинга. Интерактивная документация доступна через Swagger

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages