Skip to content

Учебный проект "Сервис укорачивания ссылок" на Flask

Notifications You must be signed in to change notification settings

DashaMalva/yacut

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Учебный проект YaCut

Python Flask SQLite

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 интерфейс

Сервис обслуживает два эндпоинта:

  • /api/id/ — POST-запрос на создание новой короткой ссылки;
  • /api/id/<short_id>/ — GET-запрос на получение оригинальной ссылки по указанному короткому идентификатору.

Примеры запросов к API, варианты ответов и ошибок приведены в файле спецификации openapi.yml. Для удобной работы с документом воспользуйтесь онлайн-редактором Swagger Editor.

База данных

В проекте настроено подключение к базе данных через ORM SQLAlchemy.
Миграции базы данных настроены через библиотеку Alembic.

Как развернуть проект на компьютере:

  1. Клонировать репозиторий c GitHub на компьютер и перейти в него в командной строке
$ git clone https://github.com/DashaMalva/yacut.git
$ cd yacut
  1. Создать и активировать виртуальное окружение
# Windows
$ python -m venv venv
$ source venv/Scripts/activate

# Linux
python3 -m venv venv
source venv/bin/activate
  1. Обновить менеджер пакетов pip
$ python -m pip install --upgrade pip
  1. Установить зависимости из requirements.txt
$ pip install -r requirements.txt
  1. Создать файл .env с переменными окружения. Пример наполнения:
FLASK_APP=yacut
FLASK_ENV=development
SECRET_KEY= MY_SECRET_KEY
DATABASE_URI=sqlite:///db.sqlite3
  1. Создать базу данных
$ flask db upgrade

Лицензия

The MIT License (MIT)

Автор проекта

Студент Яндекс.Практикум,
Дарья Матвиевская

About

Учебный проект "Сервис укорачивания ссылок" на Flask

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published