Данный микросервис предоставляет следующий API:
- Метод Post, который будет сохранять оригинальный URL в базе и возвращать сокращённый;
- Метод Get, который будет принимать сокращённый URL и возвращать оригинальный URL;
Первый метод доступен по /GetShortUrl
. На вход данный метод получает json файл, который содержит один параметр с ссылкой, которую нужно сократить. Длинна ссылки должна быть до 500 символов включительно:
{
"url":"your link"
}
Метод возвращает сокращенную ссылку, состоящую из 10 символов и статус (200 - http.StatusOK
или 201 - http.StatusCreated
, если ссылки не было в базе данных).
Второй метод доступен по /FindByShortUrl
. Данный метод принимает параметры через свою ссылку (пример: localhost:8000/GetFullUrl?short_url=mKU6ilHEfJ
, значение short_url
должно быть ровно 10 символов).
Метод возвращает полную ссылку и статус (302 - http.StatusFound
или 404 - http.StatusNotFound
). При возникновении ошибки, сервис вернет ошибку, поясняющую причину неполадки и статус 400 - http.StatusBadRequest
.
Также реализован докер образ микросервиса "Link shortener". Ссылка: https://github.com/genridarkbkru/LinkShortenerApi/releases. Запуск контейнера выполняется командой:
sudo docker run -p 8000:8000 -d -e "FLAG_STORE_WITH_DATABASE=false" --name shortener_link_v1 max/shortener_link:v1
Переменная окружения FLAG_STORE_WITH_DATABASE
устанавливает режим работы контейнера:
- true: контейнер общается в базой данных;
- false: контейнер хранит информацию в хеш таблицах.
Для поднятия бд предусмотрены миграции (Makefile).