Описание задачи: Необходимо разработать REST API для сервиса сокращения URL.
Обязательный функционал:
- Создание короткой ссылки:
POST /shorten: принимает JSON с полем originalUrl (обязательное) и возвращает укороченный URL. Укороченный URL должен быть уникальным (можно использовать случайный хэш длиной 6 символов).
Переадресация: GET /{shortUrl}: переадресует пользователя на оригинальный URL. Если ссылка не найдена, возвращает ошибку 404.
- Получение информации о ссылке:
GET /info/{shortUrl}: возвращает информацию о сокращённой ссылке: originalUrl (оригинальная ссылка), createdAt (дата создания), clickCount (количество переходов по короткой ссылке).
- Удаление короткой ссылки:
DELETE /delete/{shortUrl}: удаляет короткую ссылку.
Дополнительный функционал (по желанию):
- Время жизни ссылки:
При создании ссылки пользователь может указать срок её действия (expiresAt). Если срок истёк, редирект и запросы к этой ссылке возвращают 410 Gone.
- Аналитика переходов:
Добавить таблицу или массив для хранения данных о переходах: Сохранить дату и IP-адрес при каждом переходе по короткой ссылке.
Добавить метод: GET /analytics/{shortUrl}: возвращает количество переходов по ссылке и последние 5 IP-адресов.
-
Добавить поддержку пользовательских алиасов: POST /shorten: принимает необязательное поле alias (например, вместо случайного хэша можно сделать short.url/my-custom-alias). Проверять уникальность алиаса. Ограничение длины alias до 20 символов.
-
Docker (для запуска):
Настроить Dockerfile и docker-compose, чтобы проект можно было запустить одной командой.
- Тесты (1-2 на выбор):
Проверить: Создание ссылки с уникальным alias. Переадресацию на оригинальный URL.
- UI для тестирования (совсем упрощённое):
В проект можно добавить мини-фронтенд с формой: Поле для ввода оригинального URL. Кнопка для генерации короткой ссылки и отображения результата.