Укорачиватель ссылок
Необходимо реализовать сервис, который должен предоставлять API по созданию сокращённых ссылок следующего формата:
- Ссылка должна быть уникальной и на один оригинальный URL должна ссылаться только одна сокращенная ссылка.
- Ссылка должна быть длинной 10 символов
- Ссылка должна состоять из символов латинского алфавита в нижнем и верхнем регистре, цифр и символа _ (подчеркивание)
Сервис должен быть написан на Go и принимать следующие запросы по http:
- Метод Post, который будет сохранять оригинальный URL в базе и возвращать сокращённый
- Метод Get, который будет принимать сокращённый URL и возвращать оригинальный URL
Решение должно быть предоставлено в «конечном виде», а именно:
- Сервис должен быть распространён в виде Docker-образа
- В качестве хранилища ожидается использовать in-memory решение И postgresql. Какое хранилище использовать указывается параметром при запуске сервиса.
- Покрыть реализованный функционал Unit-тестами
Сборка версии с Postgres:
$ docker build -t url_shortener . --target=postgresСборка версии с Redis (используется как in-memory хранилище):
$ docker build -t url_shortener . --target=redisЗапуск:
$ docker run -p 8080:8080 url_shortener