/SnapJournal-api

Проект "SnapJournal(api)" - это REST API сервис ⚙️, обогащающий функциональность платформы "SnapJournal," 📝 позволяя пользователям легко управлять своим контентом и взаимодействовать с базой данных. Благодаря надежной аутентификации 🔒, документации в формате OpenAPI 📚 и защите данных 🛡️, он предоставляет безопасное и мощное API для управления

Primary LanguagePythonMIT LicenseMIT

SnapJournal(api) 📡

Python flake8 Django Pillow DRF SimpleJWT PyJWT Djoser Лицензия Размер кода

О проекте "SnapJournal" 📖

Проект "SnapJournal" - это уникальная платформа для ведения личных микроблогов и журналов. Основанный на мощном фреймворке Django-rest-framework, "SnapJournal" предоставляет REST API backend сервис, который позволяет пользователям создавать и управлять своими текстовыми и визуальными записями. "SnapJournal" разработан с акцентом на интуитивном интерфейсе и легкости в использовании, а также предоставляет возможность добавлять как текстовые, так и мультимедийные записи. Это идеальное решение для тех, кто ищет место, где можно свободно и креативно делиться своими мыслями и идеями.

SnapJournal(api) 🔌

SnapJournal(api) - это REST API сервис, который расширяет функциональность платформы SnapJournal, позволяя пользователям создавать и управлять своим контентом, отправляя CRUD запросы в формате JSON и таким образом взаимодействуя с базой данных "SnapJournal." Это предоставляет пользователям мощный инструмент для управления их контентом в системе.

🔑 Ключевые особенности

  • 🔐 Авторизация и безопасность: В проекте реализована надежная система аутентификации на основе JWT токенов, обеспечивая безопасное взаимодействие пользователей с платформой.

  • 📖 Документация: API проекта снабжен документацией в формате OpenAPI, что делает его легким в использовании и понимании.

  • 🔒 Защита данных: Для обеспечения целостности и безопасности данных, проект использует сериализаторы, которые фильтруют и проверяют информацию, предотвращая внесение некорректных данных в систему. Для хранения данных используется SQLite база данных, а использование Django ORM обеспечивает дополнительную безопасность от SQL инъекций.

  • 🛠️ Функциональность API: Аутентифицированным пользователям разрешено добавление постов и комментариев, а также изменение и удаление своего контента; в остальных случаях доступ предоставляется только для чтения. Эндпоинт /follow/ доступен только для аутентифицированных пользователей.

Этот проект, "SnapJournal(api)," обеспечивает мощное и безопасное API для управления данными и взаимодействия с контентом пользователей и является важной частью платформы "SnapJournal."

👷‍♂️ Установка 🏗️

Клонирование проекта

Для начала, клонируйте проект "SnapJournal-api" с помощью следующей команды:

git clone https://github.com/kluevevga/SnapJournal-api.git

Установка виртуальной среды 🧟‍♂️

Далее создайте виртуальное окружение:

python3 -m venv venv

Активация виртуальной среды

Активируйте виртуальное окружение в зависимости от вашей операционной системы:

🪟 Windows (PowerShell):

venv\Scripts\Activate

🪟 Windows (Git Bash):

source venv/Scripts/activate

🐧 Linux (Bash):

source venv/bin/activate

Установка зависимостей 📦

Установите необходимые зависимости из файла requirements.txt:

pip3 install -r requirements.txt

Запуск сервера 🤖

Перейдите в папку с проектом:

cd SnapJournal-api/

Выполните миграции:

python3 manage.py migrate

Запустите сервер:

py manage.py runserver

Диаграммы эндпоинтов 📊

Здесь представлены диаграммы эндпоинтов для API проекта "SnapJournal-api":

Общий вид

graph TD;
api/v1/ --> posts/;
api/v1/ --> groups/;
api/v1/ --> follow/;

Эндпоинт posts/

graph TD;
posts/ --> GET-POST;
posts/ -->id/;
id/ --> GET-PUT-PATCH-DELETE;

Эндпоинт post -> comments/

graph TD;
api/v1/posts/ --> post_id/;
post_id/ --> comments/;
comments/ --> GET-POST
comments/ --> id/
id/ --> GET-PUT-PATCH-DELETE;

Эндпоинт groups/

graph TD;
groups/ --> GET;
groups/ --> id/;
id/ --> /(GET);

Эндпоинт follow/

graph TD;
follow/ --> GET;
follow/ --> POST;

Лицензия 📜

Этот проект распространяется под лицензией MIT. Дополнительную информацию можно найти в LICENSE.