Flask-приложение для сокращения длинных ссылок с возможностью указать собственный короткий идентификатор. Работает как через веб-интерфейс, так и через REST API.
Возможности:
- Создание коротких ссылок автоматически или вручную
- Проверка уникальности идентификатора
- Переход по короткой ссылке
- JSON API для создания и получения ссылок
- Обработка ошибок (404, 500 и валидация)
Python 3.9+
Flask
WTForms
SQLAlchemy
alembic
pytest
flake8
- Клонируйте репозиторий и перейдите в директорию проекта:
git clone [email protected]:abramov-v/yacut.git
cd yacut
- Создайте и активируйте виртуальное окружение:
python -m venv venv
source venv/bin/activate # Для Windows: venv\Scripts\activate
- Установите зависимости:
pip install -r requirements.txt
- Настройте переменные окружения:
Скопируйте файл .env.example
и создайте на его основе .env
файл с параметрами запуска:
cp .env.example .env
Пример содержимого .env:
FLASK_APP=app.py # Имя вашего главного файла приложения
FLASK_DEBUG=1 # Значение = 1 включает отладочный режим
DATABASE_URI=sqlite:///db.sqlite3 # Путь к базе данных
SECRET_KEY=your_secret_key # Секретный ключ Flask (Должен быть уникальным и храниться в секрете!)
- Инициализируйте базу данных и выполните миграции:
flask db upgrade
Если вы вносите изменения в модели и хотите создать новую миграцию, выполните:
flask db migrate -m "Комментарий к миграции"
flask db upgrade
- Запустите приложение:
flask run
После запуска приложение будет доступно по адресу: http://127.0.0.1:5000/
Пример страницы генерации короткой ссылки:
Варианты ответов и ошибок приведены в спецификации openapi.yml
в репозитории.
Создание короткой ссылки (с кастомным идентификатором):
POST /api/id/
Content-Type: application/json
{
"url": "https://example.com",
"custom_id": "short_link"
}
{
"url": "https://example.com",
"short_link": "https://example.com/short_link"
}
GET /api/id/short_id
{
"url": "https://example.com"
}
Валерий Абрамов
- GitHub: @abramov-v