YaCut
- это сервис укорачивания ссылок, реализованный на фреймворке Flask.
Цель проекта - отработать навыки работы с Flask и SQLAlchemy.
- Python 3.11
- Flask 2.0.2
- SQLAlchemy 1.4.29
- Alembic 1.7.5
- WTForms 3.0.1
Назначение YaCut — ассоциировать длинную пользовательскую ссылку с короткой, которую предлагает сам пользователь или предоставляет сервис.
Возможности сервиса:
- генерация коротких ссылок и связь их с исходными длинными ссылками,
- переадресация на исходный адрес при обращении к коротким ссылкам.
Пользовательский интерфейс сервиса представляет собой страницу с формой.
В форме предусмотрены два поля для ввода:
- поле для исходной длинной ссылки,
- необязательное поле для пользовательского варианта короткой ссылки.
Сервис обслуживает два эндпоинта:
/api/id/
— POST-запрос на создание новой короткой ссылки;/api/id/<short_id>/
— GET-запрос на получение оригинальной ссылки по указанному короткому идентификатору.
Примеры запросов к API, варианты ответов и ошибок приведены в файле спецификации openapi.yml. Для удобной работы с документом воспользуйтесь онлайн-редактором Swagger Editor.
В проекте настроено подключение к базе данных через ORM SQLAlchemy.
Миграции базы данных настроены через библиотеку Alembic.
- Клонировать репозиторий c GitHub на компьютер и перейти в него в командной строке
$ git clone https://github.com/DashaMalva/yacut.git
$ cd yacut
- Создать и активировать виртуальное окружение
# Windows
$ python -m venv venv
$ source venv/Scripts/activate
# Linux
python3 -m venv venv
source venv/bin/activate
- Обновить менеджер пакетов pip
$ python -m pip install --upgrade pip
- Установить зависимости из requirements.txt
$ pip install -r requirements.txt
- Создать файл .env с переменными окружения. Пример наполнения:
FLASK_APP=yacut
FLASK_ENV=development
SECRET_KEY= MY_SECRET_KEY
DATABASE_URI=sqlite:///db.sqlite3
- Создать базу данных
$ flask db upgrade
The MIT License (MIT)
Студент Яндекс.Практикум,
Дарья Матвиевская