Skip to content

piklin/test_ozon_fintech

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание в ozon fintech

Задание

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

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

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

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

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

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

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

Результат предоставить в виде публичного репозитория на github.com

Запуск

Сборка версии с Postgres:
docker build -t short_url . --target=postgres

Сборка версии с Redis (используется как in-memory хранилище):
docker build -t short_url . --target=redis

Запуск: docker run -p 8080:8080 short_url

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

  1. Для получения сокращенной ссылки необходимо отправить POST запрос:
    Input:
    http://localhost:8080/
{
  "url": "https://google.com/"
}

Output:

{
    "short_url": "localhost:8080/yljUFaK2nd"
}
  1. Для получения полной ссылки необходимо отправить GET запрос:
    Input:
    http://localhost:8080/yljUFaK2nd
    Output:
{
    "full_url": "https://google.com/"
}

К сожалению, полноценно разобраться в unit тестировании в golang и написать хорошие тесты не хватило времени, поэтому тестами покрыта лишь часть кода

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published