7.2 KiB
Wish List API
API-сервер для приложения списка желаний с использованием принципов чистой архитектуры.
Описание
Wish List API - это RESTful API-сервис, который позволяет пользователям создавать, управлять и делиться своими списками желаемых подарков. Приложение разработано с использованием чистой архитектуры для обеспечения масштабируемости, тестируемости и поддержки в долгосрочной перспективе.
Основные возможности
- Регистрация и аутентификация пользователей
- Авторизация через Telegram
- Создание, просмотр, редактирование и удаление списков желаний
- Добавление, просмотр, редактирование и удаление элементов в списке желаний
- Настройка приватности списков желаний (публичный/приватный доступ)
- Подробная документация API через Swagger
Технологический стек
- Go - язык программирования
- Fiber - веб-фреймворк
- MongoDB - база данных
- JWT - токены для аутентификации
- Swagger - документация API
- Docker - контейнеризация приложения
Архитектура проекта
Проект следует принципам чистой архитектуры, разделяя код на следующие слои:
api/- HTTP обработчики, маршрутизация и представленияhandlers/- HTTP обработчики запросовmiddleware/- промежуточные обработчикиpresenter/- форматирование ответовroutes/- маршрутизация API
cmd/- точка входа в приложениеdocs/- автоматически сгенерированная Swagger документацияpkg/- основная бизнес-логика и сущностиauth/- аутентификация и авторизацияentities/- основные сущности (модели данных)user/- сервисы для работы с пользователямиwish-list/- сервисы для работы со списками желаний
tests/- тестыunit/- модульные тестыintegration/- интеграционные тесты
Установка и запуск
Требования
Переменные окружения
Создайте файл .env на основе .env.example:
TELEGRAM_BOT_TOKEN=123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ
TELEGRAM_APP_URL=https://wish-list-bot.telegram.bot
MONGO_USER=mongo_user
MONGO_PASSWORD=mongo_password
MONGO_DATABASE=books
Запуск с использованием Docker
-
Клонируйте репозиторий:
git clone https://github.com/yourusername/wish-list-api.git cd wish-list-api -
Запустите приложение с помощью Docker Compose:
docker-compose up -d -
API будет доступен по адресу
http://localhost:8080 -
Документация Swagger доступна по адресу
http://localhost:8080/docs/index.html
Локальный запуск для разработки
-
Клонируйте репозиторий:
git clone https://github.com/yourusername/wish-list-api.git cd wish-list-api -
Установите зависимости:
go mod download -
Запустите приложение:
go run cmd/main.go
API Endpoints
Основные эндпоинты API:
Аутентификация
- POST /api/auth/register - Регистрация нового пользователя
- POST /api/auth/login - Авторизация пользователя
- GET /api/auth/telegram-login - Авторизация через Telegram
Пользователи
- GET /api/users/:id - Получение информации о пользователе
- PUT /api/users/:id - Обновление информации пользователя
Списки желаний
- POST /api/wishlist - Создание нового списка желаний
- GET /api/wishlist/:id - Получение списка желаний по ID
- GET /api/wishlist/user/:userId - Получение всех списков желаний пользователя
- PUT /api/wishlist/:id - Обновление списка желаний
- DELETE /api/wishlist/:id - Удаление списка желаний
Элементы списка желаний
- POST /api/wishlist/item - Добавление элемента в список желаний
- GET /api/wishlist/:wishlistId/items - Получение всех элементов списка желаний
- GET /api/wishlist/item/:id - Получение элемента списка по ID
- PUT /api/wishlist/item/:id - Обновление элемента списка
- DELETE /api/wishlist/item/:id - Удаление элемента из списка
Тестирование
Запуск модульных тестов
go test ./tests/unit/...
Запуск интеграционных тестов
go test ./tests/integration/...
Запуск всех тестов с покрытием
./run-docker-tests.sh
Contributing
- Форкните репозиторий
- Создайте новую ветку для вашей функциональности (
git checkout -b feature/amazing-feature) - Зафиксируйте изменения (
git commit -m 'Add some amazing feature') - Отправьте изменения в ветку (
git push origin feature/amazing-feature) - Создайте Pull Request
Лицензия
Распространяется под лицензией MIT. Смотрите LICENSE для получения дополнительной информации.