Сервис Библиотеки песен - это сервис на Go,предоставляющий возможность взаимодействовать с библиотекой песен. Эта документация предоставляет обзор сервиса, его API-эндпоинтов и как настроить и запустить его.
-
Получение данных библиотеки с фильтрацией по всем полям и пагинацией
-
Получение текста песни с пагинацией по куплетам
-
Удаление песни
-
Изменение данных песни
-
Добавление новой песни в формате
-
При добавлении сделать запрос в АПИ, описанного сваггером. Апи, описанный сваггером, будет поднят при проверке тестового задания. Реализовывать его отдельно не нужно
-
Обогащенную информацию положить в БД postgres (структура БД должна быть создана путем миграций при старте сервиса)
-
Покрыть код debug- и info-логами
-
Вынести конфигурационные данные в .env-файл
-
Сгенерировать сваггер на реализованное АПИ
-
Реализован обработчик
POST /song -
Реализован обработчик
GET /songs -
Реализован обработчик
GET /song/{id} -
Реализован обработчик
DELETE /song/{id} -
Реализован обработчик
PUT /song/{id} -
Реализован обработчик
PUT /swagger/
- Go
- сhi framework - для API хандлера
- env,godotenv - для конфигурации
- slog - для логирования
- Docker, docker-compose
- Swagger
Конфигурация сервиса указана в файле local.env в виде переменных окружения. Подробно можно посмотреть и поменять в файле
config/local.env
HTTP_PORT=:8080
LOG_LEVEL=DEBUG
# for go run cmd/app/main.go DB_HOST=localhost
DB_HOST=db
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=postgres
SSL_MODE=disable
LIMIT=10
PAGE=1
VERSE=3- Клонируем репозиторий в вашу рабочую директорию:
git clone https://github.com/instinctG/songLibrary.git
Запустить сервис можно 2 способами:
- Сбилдить go программу
- Использовать Docker и запустить docker-compose
Сбилдить приложение :
- Для запуска БД в локалке, в файле local.env поменять DB_HOST=localhost
go build -o song cmd/app/main.goЗапуск сервиса:
./song
Завершить работу сервиса(graceful-shutdown)
Ctrl+C
Сбилдить и запустить docker-compose (в первый раз может не получится запустить, надо пробовать заново):
- Для запуска БД в контейнере, в файле local.env поменять DB_HOST=db
docker-compose up --buildЗавершить работу сервиса(graceful-shutdown)
Ctrl+C
Ниже предоставлена информация по эндпоинтам, а также примеры взаимодействия с API.
для более подробных логов лучше запускать на уровне DEBUG(можно задать в local.env)
Сервис предоставляет Swagger документацию на API-эндпоинты по ссылке, в которую можно будет перейти после запуска приложения(выше):
http://localhost:8080/swagger/index.html
-
Для POST /song - по данной ручке передаются параметры song,group с помощью которых находится информация(text,releaseDate,link) из API Swagger, который по требованию не нужно реализовывать отдельно:
-
API описанный свагером:
GET http://localhost:63342/info?song=...&group=...
-
Эндпоинт:
/song -
Метод: POST
-
Описание: Добавляет песню в БД.
-
Тело запроса: JSON
-
Параметры:
song: имя песниgroup: имя группы
{
"song": "Muse",
"group": "Supermassive Black Hole"
}
POST http://localhost:8080/song
{
"group": "Muse",
"id": "1",
"link": "https://www.youtube.com/watch?v=Xsp3_a-PMTw",
"releaseDate": "02.01.2006",
"song": "Supermassive Black Hole",
"text": "Ooh baby, don't you know I suffer?\nOoh baby, can you hear me moan?"
}