Skip to content

IgorAleksandroff/url-shorter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Укорачиватель ссылок

Запуск сервиса

docker-compose up --build url-short

Выбор хранилища

Для выбора хранилища необходимо задать переменную окружения в файле "docker-compose.yml": environment:

  • PG_MEMO=false # хранение ссылок в памяти приложения
  • PG_MEMO=true # хранение ссылок в памяти СУБД PostgreSQL

Пример работы

Создание короткой ссылки

POST: http://localhost:8000/save?url=https://ozon.ru/ где параметру "url" присваивается значение ссылки для сокращения "http://localhost:8000/save?url=https://ozon.ru/" Ответ сервиса: "короткий URL: rRX72HpYk_"

Переход по короткой ссылке

GET: http://localhost:8000/rRX72HpYk_ при переходе по короткой ссылке сервис перенаправит запрос по ориганальной ссылке

Техническое задание

Необходимо реализовать сервис, который должен предоставлять API по созданию сокращённых ссылок следующего формата:

  • Ссылка должна быть уникальной и на один оригинальный URL должна ссылаться только одна сокращенная ссылка.
  • Ссылка должна быть длинной 10 символов
  • Ссылка должна состоять из символов латинского алфавита в нижнем и верхнем регистре, цифр и символа _ (подчеркивание)

Сервис должен быть написан на Go и принимать следующие запросы по http:

  1. Метод Post, который будет сохранять оригинальный URL в базе и возвращать сокращённый
  2. Метод Get, который будет принимать сокращённый URL и возвращать оригинальный URL

Решение должно быть предоставлено в «конечном виде», а именно:

  • Сервис должен быть распространён в виде Docker-образа
  • В качестве хранилища ожидается использовать две реализации. Какое хранилище использовать, указывается параметром при запуске сервиса.
    • Первое это postgresql.
    • Второе - самостоятельно написать пакет для хранения ссылок в памяти приложения.
  • Покрыть реализованный функционал Unit-тестами

About

Укорачиватель ссылок

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published