Coder Social home page Coder Social logo

yacut's Introduction

Сервис YaCut

Описание проекта

Сервис YaCut - это сервис укорачивания ссылок и API к нему

Ключевые возможности сервиса:

  • генерация коротких ссылок и связь их с исходными длинными ссылками
  • переадресация на исходный адрес при обращении к коротким ссылкам

Пользовательский интерфейс сервиса — одна страница с формой. Эта форма состоит из двух полей:

  • обязательного для длинной исходной ссылки
  • необязательного для пользовательского варианта короткой ссылки (не должен превышать 16 символов)

Если пользователь предложит вариант короткой ссылки, который уже занят, то появляется соответствующее уведомление. Существующая в базе данных ссылка должна остаться неизменной.

Если пользователь не заполнит поле со своим вариантом короткой ссылки, то сервис должен сгенерировать её автоматически. Формат для ссылки по умолчанию — шесть случайных символов, в качестве которых можно использовать:

  • большие латинские буквы,
  • маленькие латинские буквы,
  • цифры в диапазоне от 0 до 9.

Автоматически сгенерированная короткая ссылка добавляется в базу данных, но только если в ней уже нет такого же идентификатора. В противном случае идентификатор генерируется заново.

API для проекта

API проекта доступен всем желающим. Сервис обслуживает только два эндпоинта:

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

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

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

GET .../api/id/{short_id}/ 200

{
  "url": "string"
}

404

{
  "message": "Указанный id не найден"
}

POST .../api/id/

{
  "url": "string",
  "custom_id": "string"
}

201

{
  "url": "string",
  "short_link": "string"
}

400

{
  "message": "Отсутствует тело запроса"
}

Шаблон наполнения .env файла

FLASK_APP=yacut
FLASK_DEBUG=1
DATABASE_URI=sqlite:///db.sqlite3
SECRET_KEY="SECRET"
TEMPLATE_FOLDER="html"
STATIC_FOLDER="html"

Инструкция по развёртыванию проекта

  • клонировать проект на компьютер git clone https://github.com/mysm/yacut.git
  • создание виртуального окружения python3 -m venv venv
  • запуск виртуального окружения . venv/bin/activate
  • установить зависимости из файла requirements.txt pip install -r requirements.txt
  • запуск тестов pytest
  • запуск приложения flask run

Системные требования

  • Python > 3.7
  • Flask > 2.0.2

yacut's People

Contributors

mysm avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.