Skip to content
/ YaTubeAPI Public template

A simple RESTful API with JWT-based authentication

Notifications You must be signed in to change notification settings

forbxpg/YaTubeAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛠️ RESTful API к социальной сети Yatube

Django REST Framework Python Django

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

REST API для проекта Yatube на Django Rest Framework (DRF), позволяющий пользователям публиковать посты, комментировать их и подписываться на других пользователей.

🔑 Реализованные технологии

  • 📄 Возможности CRUD операций над API
  • 💬 Комментирование и просматривание постов
  • ✅ Система подписок на других пользователей
  • 👀 Просмотр групп с постами
  • 🔐 Аутентификация с помощью JWT

⚙️ Установка

  1. Клонируйте репозиторий:

    git clone (https://github.com/forbxpg/api_final_yatube.git)
  2. Создайте виртуальное окружение и активируйте его:

    python -m venv env
    source env/bin/activate  # для Linux/Mac
    .\env\Scripts\activate  # для Windows
  3. Установите зависимости:

    cd api_final_yatube
    pip install -r requirements.txt
  4. Выполните миграции:

    cd yatube_api
    python manage.py makemigrations
    python manage.py migrate
  5. Создайте суперпользователя:

    python manage.py createsuperuser
  6. Запустите сервер разработки:

    python manage.py runserver

📂 Структура проекта

.
├── api
│   └── templates
        └── redoc.html   # Шаблон для документации к API [ReDoc]
│   ├── apps.py          # Конфигурация приложения API
│   ├── serializers.py   # Сериализаторы моделей
│   ├── views.py         # Представления API
│   ├── urls.py          # Маршруты API
│   └── permissions.py   # Модуль для разрешений к проекту
├── posts
│     └── models.py      # Модели, используемые в БД
├── yatube_api
│     └── settings.py    # Файл с настройками проекта
├── static
│     └── redoc.yaml     # Документация к API
└── requirements.txt     # Список использованных зависимостей

🖇️ API Эндпоинты

🔐 Аутентификация

  • POST /api/v1/token/ — Получить JWT-токен
  • POST /api/v1/token/refresh/ — Обновить JWT-токен

🔍 Публикации [Доступ только для аутентифицированных пользователей]

  • GET /api/v1/posts/ — Получить список публикаций
  • POST /api/v1/posts/ — Создать новый пост
  • GET /api/v1/posts/{post_id}/ — Получить пост по ID
  • PATCH /api/v1/posts/{post_id}/ — Обновить пост (только автор)
  • DELETE /api/v1/posts/{post_id}/ — Удалить пост (только автор)

💬 Комментарии [Доступ только для аутентифицированных пользователей]

  • GET /api/v1/posts/{post_id}/comments/ — Список комментариев к посту
  • POST /api/v1/posts/{post_id}/comments/ — Добавить комментарий
  • PATCH /api/v1/posts/{post_id}/comments/{comment_id}/ — Изменить комментарий (только автор)
  • DELETE /api/v1/posts/{post_id}/comments/{comment_id}/ — Удалить комментарий (только автор)

👥 Подписки

  • GET /api/v1/follow/ — Список подписок
  • POST /api/v1/follow/ — Подписаться на пользователя

🏷️ Группы

  • GET /api/v1/groups/ — Список групп
  • GET /api/v1/groups/{group_id}/ — Получить информацию о группе

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

1️⃣ Создание поста

curl -X POST http://localhost:8000/api/v1/posts/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <твой_токен>" \
-d '{"text": "Это база!"}'

2️⃣ Добавление комментария

curl -X POST http://localhost:8000/api/v1/posts/1/comments/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <твой_токен>" \
-d '{"text": "Не, это баян."}'

3️⃣ Подписка на пользователя

curl -X POST http://localhost:8000/api/v1/follow/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <твой_токен>" \
-d '{"following": "username"}'

🛠️ Используемые технологии

  • Django Rest Framework — Создание CRUD-операций для API
  • Djoser — Аутентификация через JWT-токены
  • Base64 — Кодирование изображений для JSON

🛡️ Разрешения

  • OnlyAuthorPermission — Изменять и удалять контент может только автор

📖 Документация

Для просмотра документации перейдите по адресу:

  • http://localhost:8000/redoc/

✨ Автор

Тимур:)

🌟 Если проект вам понравился, не забудьте поставить ⭐ на GitHub!

About

A simple RESTful API with JWT-based authentication

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published