YaCut — это веб-сервис для укорачивания ссылок, который связывает длинные URL с короткими. Пользователи могут задавать собственные короткие идентификаторы или использовать автоматически сгенерированные ссылки.
На многих сайтах URL-адреса страниц могут быть слишком длинными и неудобными для использования. YaCut позволяет сократить такие ссылки, чтобы было проще делиться ими. Сервис поддерживает как пользовательские короткие ссылки, так и автоматически сгенерируемые.
Ключевые возможности:
- Генерация коротких ссылок: ассоциация длинного URL с уникальным коротким идентификатором.
- Редирект: переход на исходный адрес при обращении по короткой ссылке.
- API: взаимодействие через RESTful API для создания и получения ссылок.
- Пользователь вводит длинную ссылку и получает короткий URL.
- Пользователь может задать свой вариант короткого идентификатора (не более 16 символов).
- Если пользовательский идентификатор занят, то выдается уведомление.
- Если идентификатор не указан, сервис генерирует его автоматически (6 случайных символов: буквы и цифры).
Проект разработан на Flask и использует SQLAlchemy (по умолчанию используется SQLite).
-
Клонируйте репозиторий с GitHub:
git clone cd yacut
-
Создайте и активируйте виртуальное окружение:
python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows
-
Установите зависимости:
pip install -r requirements.txt
-
Создайте файл
.env
с переменными окружения, например:FLASK_APP=yacut FLASK_ENV=development DATABASE_URI=sqlite:///db.sqlite3 SECRET_KEY=1243 ENDPOINT=http://localhost/
-
Запустите сервер:
flask run
Откройте браузер и перейдите на http://127.0.0.1:5000/
. На главной странице сервиса находится форма с двумя полями:
- Поле для длинного URL (обязательно).
- Поле для короткого идентификатора (необязательно).
После отправки формы вы получите короткую ссылку, которая перенаправит на исходный URL.
-
POST /api/id/ — создание новой короткой ссылки.
- Тело запроса должно содержать JSON с полями:
original
: исходный URL.custom_id
(опционально): пользовательский короткий идентификатор.
- Пример запроса:
{ "original": "https://example.com/long-url", "custom_id": "example" }
- Тело запроса должно содержать JSON с полями:
-
GET /api/id/<short_id>/ — получение исходного URL по короткому идентификатору.
- Пример запроса:
GET /api/id/example/
- Ответ:
{ "original": "https://example.com/long-url" }
- Пример запроса:
- 400: Неверный запрос (например, короткий идентификатор уже занят).
- 404: Ссылка не найдена (неверный
short_id
).