Skip to content

ORBUZIK/api-final-yatube-ad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API Yatube

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

API Yatube — это REST API для социальной сети блогов Yatube. Проект позволяет взаимодействовать с платформой из любых клиентских приложений.

С помощью этого API пользователи могут:

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

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

  • Аутентификация реализована с использованием JWT-токенов.
  • Анонимным пользователям доступен только просмотр контента (постов, групп, комментариев).
  • Изменение и удаление контента разрешено только его авторам.
  • Эндпоинт подписок (/follow/) доступен только авторизованным пользователям и имеет встроенный поиск по авторам.
  • Реализована пагинация для выдачи большого количества постов.

Технологии

  • Python 3.10
  • Django 3.2
  • Django REST Framework
  • Djoser & djangorestframework-simplejwt
  • SQLite3

Установка и запуск

  1. Клонируйте репозиторий на свой компьютер:
git clone <ссылка_на_ваш_репозиторий>
cd yatube_api
  1. Создайте и активируйте виртуальное окружение:
  • Для Windows:
python -m venv venv
source venv/Scripts/activate
  • Для Linux/macOS:
python3 -m venv venv
source venv/bin/activate
  1. Установите зависимости:
pip install -r requirements.txt
  1. Выполните миграции базы данных:
python manage.py migrate
  1. Запустите локальный сервер:
python manage.py runserver

Проект будет доступен по адресу: http://127.0.0.1:8000/. Полная документация API в формате ReDoc доступна по адресу: http://127.0.0.1:8000/redoc/.

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

1. Получение JWT-токена

Запрос: POST /api/v1/jwt/create/

{
  "username": "test_user",
  "password": "test_password123"
}

Ответ (200 OK):

{
  "refresh": "eyJ0eXAiOiJKV1QiLCJhbG...",
  "access": "eyJ0eXAiOiJKV1QiLCJhbGc..."
}

Полученный access токен необходимо передавать в заголовке Authorization: Bearer <токен> для всех защищенных эндпоинтов.

2. Получение списка постов

Запрос: GET /api/v1/posts/ (Возможна пагинация при передаче параметров ?limit=10&offset=0)

Ответ (200 OK):

[
  {
    "id": 1,
    "author": "test_user",
    "text": "Мой первый пост через API!",
    "pub_date": "2023-10-25T14:30:00Z",
    "image": null,
    "group": null
  }
]

3. Создание нового комментария

Запрос: POST /api/v1/posts/{post_id}/comments/ Заголовок: Authorization: Bearer <токен>

{
  "text": "Отличный пост, продолжай в том же духе!"
}

Ответ (201 Created):

{
  "id": 5,
  "author": "test_user",
  "text": "Отличный пост, продолжай в том же духе!",
  "created": "2023-10-25T15:00:00Z",
  "post": 1
}

4. Подписка на пользователя

Запрос: POST /api/v1/follow/ Заголовок: Authorization: Bearer <токен>

{
  "following": "another_author_username"
}

Ответ (201 Created):

{
  "user": "test_user",
  "following": "another_author_username"
}

About

api-final-yatube-ad

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors