Онлайн библиотеки песен 🎶
Стек технологий:
go, gin, sqlx, logrus, goose, postgres
Присутствует документация swagger:
-
Файл
openapi.yamlили по ссылке -
http://localhost:8080/swagger/index.html
Для подключения к базе данных и внешнего сервиса требуется .env файл в корне проекта
#Database parameters
DB.USER= #postgres
DB.DBNAME= #song_lib_db
DB.PASSWORD= #not 123456
DB.SSLMODE= #enable / disable
DB.HOST= #localhost
DB.PORT= #5432
#Server parameters
SERVER.HOST= #localhost
SERVER.PORT= #8080
#For /info requests. Used in clientService
SERVER.EXTERNAL_API= #localhost:3000 GET /swagger/index.html
обращается к http://localhost:8080/openapi.yaml
GET /ping
Возвращает структуру
{
"message": "pong!"
}GET /songs
Использует параметры запроса для фильтрации
Каждый параметр является необязательным.
{
"id": int
"song": string
"group": string
"releaseDate": string
"text": string
"link": string
"offset": int
"limit": int
}Если сделать запрос без параметров то
в таком случае выведутся первые 10 песен
Иначе возвращает только те песни, которые подходят под критерии
Пример запроса
http://localhost:8080/songs/?song=sunflower&link=youtube.com
GET /songs/:id
В параметре запроса принимает offset: int
GET /songs/3?offset=3
Выводит по 3 куплета
DELETE songs/:id
PUT songs/:id
Меняет модель с айди из запроса на ту, которая приходит в теле
Возвращает id
POST /songs
Принимает в теле два поля
{
song: string
group: string
}Обращается к
GET http://EXTERNAL_API/info
Получает структуру SongDetail и добавляет в бд новую песню
