Skip to content

tinkofoxil/api_yamdb

Repository files navigation

Групповой проект «Yamdb»

Цель работы над проектом - получить опыт командной работы.

Описание

Проект YaMDb собирает отзывы (Review) пользователей на произведения (Titles).

Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий (Category) может быть расширен администратором.

Произведению может быть присвоен жанр (Genre) из списка предустановленных. Новые жанры может создавать только администратор.

Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы (Review) и ставят произведению оценку (от одного до десяти). Из пользовательских оценок формируется усреднённая оценка произведения — рейтинг. На одно произведение пользователь может оставить только один отзыв.

Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.

Функционал:

AUTH

  • Регистрация нового пользователя
  • Получение JWT-токена

USERS

  • Каждый пользователь имеет свою роль:
    • Аноним
    • Аутентифицированный пользователь (user)
    • Модератор (moderator)
    • Администратор (admin)
    • Суперюзер Django
  • Получение списка всех пользователей
  • Получение данных своей учетной записи
  • Получение пользователя по username
  • Добавление пользователя
  • Изменение данных своей учетной записи
  • Изменение данных пользователя по username
  • Удаление пользователя по username

TITLES

  • Получить список всех публикаций
  • Получение информации о произведении
  • Добавление произведения
  • Частичное обновление информации о произведении
  • Удаление произведения

CATEGORIES

  • Получение списка всех категорий
  • Добавление новой категории
  • Удаление категории

GENRES

  • Получение списка всех категорий
  • Добавление жанра
  • Удаление жанра

REVIEWS

  • Получение списка всех отзывов
  • Полуение отзыва по id
  • Добавление нового отзыва
  • Частичное обновление отзыва по id
  • Удаление отзыва по id

COMMENTS

  • Получение списка всех комментариев к отзыву
  • Получение комментария к отзыву
  • Добавление комментария к отзыву
  • Частичное обновление комментария к отзыву
  • Удаление комментария к отзыву

Настройка и запуск:

  1. Клонируем репозиторий на локальную машину:

    $ git clone https://github.com/evgeny81d/api_yamdb.git
    
  2. Создаём виртуальное окружение и установливаем зависимости:

    python -m venv venv
    pip install -r requirements.txt
    
  3. Создаём и применяем миграции:

    python manage.py makemigrations
    python manage.py migrate
    
  4. Запускаем сервер django:

    python manage.py runserver
    

Примеры запросов на эндпоинты.

Создание нового пользователя

Запрос

curl --location --request POST 'http://127.0.0.1:8000/api/v1/auth/signup/' \
--header 'Content-Type: application/json' \
--data-raw '{
    "email": "newuseremail@example.com",
    "username": "newuser"
}'

Ответ

{
    "email": "newuseremail@example.com",
    "username": "newuser"
}

Получение токена

Запрос

curl --location --request POST 'http://127.0.0.1:8000/api/v1/auth/token/' \
--header 'Content-Type: application/json' \
--data-raw '{
    "username": "newuser",
    "confirmation_code": "newuser-confirmation-code"
}'

Ответ

{
    "token": "jwt_access_token"
}

Обращение к данным своей учетной записи

Запрос

curl --location --request GET 'http://127.0.0.1:8000/api/v1/users/me/' \
--header 'Authorization: Bearer jwt_access_token'

Ответ

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

Стек технологий

  • Python 3.7.13,
  • Django 2.2.16,
  • Django Filter 21.1
  • Django REST Framework 3.12.4
  • Simple JWT 5.2.0

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

Чтобы открыть документацию, запустите сервер и перейдите по ссылке:http://127.0.0.1:8000/redoc/

Разработчики

Евгений Дериглазов | Тимлид. Кастомная модель User, регистрация и аутентификация пользователей.

Александр Гетманов | Разработчик, контент Администратора.

Герман Кабачков | Разработчик, контент пользователей.

About

api_yamdb

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors