Skip to content

abramov-v/yacut

Repository files navigation

Сократитель ссылок - YaCut

О проекте

Flask-приложение для сокращения длинных ссылок с возможностью указать собственный короткий идентификатор. Работает как через веб-интерфейс, так и через REST API.

Возможности:

  • Создание коротких ссылок автоматически или вручную
  • Проверка уникальности идентификатора
  • Переход по короткой ссылке
  • JSON API для создания и получения ссылок
  • Обработка ошибок (404, 500 и валидация)

Используемый стек

Python 3.9+
Flask
WTForms
SQLAlchemy
alembic
pytest
flake8

Установка

  1. Клонируйте репозиторий и перейдите в директорию проекта:
git clone [email protected]:abramov-v/yacut.git
cd yacut
  1. Создайте и активируйте виртуальное окружение:
python -m venv venv
source venv/bin/activate # Для Windows: venv\Scripts\activate
  1. Установите зависимости:
pip install -r requirements.txt
  1. Настройте переменные окружения:

Скопируйте файл .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 (Должен быть уникальным и храниться в секрете!)
  1. Инициализируйте базу данных и выполните миграции:
flask db upgrade

Если вы вносите изменения в модели и хотите создать новую миграцию, выполните:

flask db migrate -m "Комментарий к миграции"
flask db upgrade
  1. Запустите приложение:
flask run

После запуска приложение будет доступно по адресу: http://127.0.0.1:5000/

Интерфейс

Пример страницы генерации короткой ссылки:

YaCut скриншот

Примеры запросов к API

Варианты ответов и ошибок приведены в спецификации openapi.yml в репозитории.

POST /api/id/

Создание короткой ссылки (с кастомным идентификатором):

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>/

GET /api/id/short_id
{
  "url": "https://example.com"
}

Автор

Валерий Абрамов

About

A Flask-based URL shortening service.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published