Проект, посвященный созданию сервиса для сокращения ссылок
Алгоритм основан на представлении числа (ID ссылки в базе данных) в base62.
- При создании короткой ссылки представляем ID полной ссылки в базе данных ввиде числа в системе счисления 62.
- При переходе по короткой ссылке получаем ID с помощью base62.Decode(path) и забираем полный URL из базы данных.
docker-compose up
Приложение будет доступно на порте 3000
POST
: Создать новую короткую ссылку
Запрос:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"url": "http://google.com"}' \
http://localhost:3000/api/shorten_url
Ответ: url
- URL сайта, shorten_url_full
- короткая ссылка, shorten_url
- относительня короткая ссылка
{
"url":"http://google.com",
"shorten_url_full":"192.168.99.106:3000/{ID}",
"shorten_url":"{ID}"
}
Или код ошибки с описанием.
Запрос:
curl --header "Content-Type: application/json" --request GET http://192.168.99.100:3000/R
Ответ: 301 Moved Permamently
или 404 Not Found
- Написаны тесты (постарайтесь достичь покрытия в 70% и больше)
- Добавлена валидация URL с проверкой корректности ссылки
- Добавлен кеширующий Redis
- Добавлена возможность задавать кастомные ссылки, чтобы пользователь мог сделать их человекочитаемыми - http://bit.ly/avito-auto-be
- Проведено нагрузочное тестирование с целью понять, какую нагрузку на чтение может выдержать наш сервис