AnnaMihailovna / HobbyDb-REST-API

🎮🎧🖥📚REST API для базы отзывов о фильмах, книгах и музыке.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HobbyDb 📖🎥🎼

Описание

HobbyDb - проект, который собирает отзывы пользователей на произведения. Сами произведения в HobbyDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку. Произведения делятся на категории, такие как «Книги», «Фильмы», «Музыка». Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы и ставят произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). На одно произведение пользователь может оставить только один отзыв. Пользователи могут оставлять комментарии к отзывам.

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

🔸 Система регистрации при помощи JWT-токена

🔸 Пользовательские роли: Аноним, Аутентифицированный пользователь, Модератор, Администратор

🔸 Категории categories и жанры genres произведений

🔸 Возможность оставлять отзывы reviews с оценками и комментарии comments к ним пользователями users

Технологический стек

Python Django REST Framework SQLite

🚀 Запуск проекта:

Клонировать репозиторий и перейти в него в командной строке:

git clone git@github.com:AnnaMihailovna/HobbyDb-REST-API.git

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

python3.9 -m venv venv
source venv/bin/activate

Установить зависимости из файла requirements.txt:

python -m pip install --upgrade pip
pip install -r requirements.txt
cd yatube_api

🏢 База данных:

Для загрузки данных, получаемых вместе с проектом, используйте management-команду, добавляющую данные в БД через Django ORM. Предварительно надо удалить базу: если у вас уже есть файл db.sqlite3, удалите его. Затем подготовьте и проведите миграции:

python manage.py makemigrations
python manage.py migrate

Затем management-команда:

python manage.py import

Результатом успешного импорта данных из файлов csv в БД будет строка, выведенная в терминал:

$ Данные успешно загружены

Запустить проект:

python manage.py runserver

📋 Документация к API:

После запуска dev-сервера доступ к подробной документация по адресу: http://127.0.0.1:8000/redoc/

Регистация нового пользователя:

POST /api/v1/auth/signup/

{
  "email": "string",
  "username": "string"
}

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

POST /api/v1/auth/token/

{
  "username": "string",
  "confirmation_code": "string"
}

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

Для авторизованных пользователей:

Добавление категории:

  • Права доступа: Администратор.

POST /api/v1/categories/

{
  "name": "string",
  "slug": "string"
}

Удаление категории:

  • Права доступа: Администратор.

DELETE /api/v1/categories/{slug}/

Добавление жанра:

  • Права доступа: Администратор.

POST /api/v1/genres/

{
  "name": "string",
  "slug": "string"
}

Удаление жанра:

  • Права доступа: Администратор.

DELETE /api/v1/genres/{slug}/

🔄 Обновление публикации:

PUT /api/v1/posts/{id}/

{
"text": "string",
"image": "string",
"group": 0
}

Добавление произведения:

  • Права доступа: Администратор.
  • Нельзя добавлять произведения, которые еще не вышли (год выпуска не может быть больше текущего).

POST /api/v1/titles/

{
  "name": "string",
  "year": 0,
  "description": "string",
  "genre": [
    "string"
  ],
  "category": "string"
}

Добавление произведения:

  • Права доступа: Доступ без токена.

GET /api/v1/titles/{titles_id}/

{
  "id": 0,
  "name": "string",
  "year": 0,
  "rating": 0,
  "description": "string",
  "genre": [
    {
      "name": "string",
      "slug": "string"
    }
  ],
  "category": {
    "name": "string",
    "slug": "string"
  }
}

♻️ Частичное обновление информации о произведении:

  • Права доступа: Администратор.

PATCH /api/v1/titles/{titles_id}/

{
  "name": "string",
  "year": 0,
  "description": "string",
  "genre": [
    "string"
  ],
  "category": "string"
}

♻️ Частичное обновление информации о произведении:

  • Права доступа: Администратор.

DEL /api/v1/titles/{titles_id}/

Работа с пользователями:

📃 Список пользователей:

  • Права доступа: Администратор.

GET /api/v1/users/ - Получение списка всех пользователей

👨👩 Добавление пользователя:

  • Права доступа: Администратор.
  • Поля email и username должны быть уникальными.

POST /api/v1/users/ - Добавление пользователя

{
"username": "string",
"email": "user@example.com",
"first_name": "string",
"last_name": "string",
"bio": "string",
"role": "user"
}

📛 Получение пользователя по username:

  • Права доступа: Администратор.

GET /api/v1/users/{username}/ - Получение пользователя по username

✏️ Изменение данных пользователя по username:

  • Права доступа: Администратор.

PATCH /api/v1/users/{username}/ - Изменение данных пользователя по username

{
  "username": "string",
  "email": "user@example.com",
  "first_name": "string",
  "last_name": "string",
  "bio": "string",
  "role": "user"
}

Удаление пользователя по username:

  • Права доступа: Администратор.

DELETE /api/v1/users/{username}/ - Удаление пользователя по username

Получение данных своей учетной записи:

  • Права доступа: Любой авторизованный пользователь.

GET /api/v1/users/me/ - Получение данных своей учетной записи

📝 Изменение данных своей учетной записи:

  • Права доступа: Любой авторизованный пользователь.

PATCH /api/v1/users/me/ # Изменение данных своей учетной записи

😎 Авторы проекта:

Дежурко Анна

Github:https://github.com/AnnaMihailovna

Жугрин Олег

Github:https://github.com/theslayah

Миндугулов Мансур

Github:https://github.com/Mans-Mans

About

🎮🎧🖥📚REST API для базы отзывов о фильмах, книгах и музыке.

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Python 99.2%Language:HTML 0.8%