Skip to content

time-spacex/api_yamdb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание.

Данный проект предоставляет API сервис на базе Django REST framework, для получения информации о произведениях (книгах, фильмах и др.), редактирования отзывов и рейтинга. В проекте реализованы такие возможности как:

  • Регистрация новых пользователей, верификация по JWT токену;
  • Система распределения ролей пользователей.
  • Получение списка произведений, просмотр отзывов и комментариев;
  • Возможность пользователю оставить отзыв или комментарий к отзыву;
  • Возможность ставить оценки к произведениям, на основе которых рассчитывается рейтинг произведения.

Установка.

Чтоб развернуть проект на локальной машине выполните следующее:

Клонировать репозиторий, открыть папку в Вашем IDE:

git@github.com:time-spacex/api_yamdb.git

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

python -m venv env
source venv/scripts/activate

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

pip install -r requirements.txt

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

python3 manage.py migrate

В терминале перейти в директорию api_yamdb

cd api_yamdb/

Запустить скрипт для заполнения базы данных произведениями:

python3 csv_data_upload_to_db_sqlite.py

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

python manage.py runserver

Документация к проекту с описанием доступных методов и эндпоинтов:

http://127.0.0.1:8000/redoc/

Регистрация пользователя.

Для того чтоб зарегистрировать нового пользователя в системе необходимо отправить POST запрос на адрес api/v1/auth/signup/ с параметрами "username" и "email". После отправки запроса, на указанный email будет отправлено письмо с кодом подтверждения confirmation_code. Для получения JWT токена отправьте POST запрос с параметрами email и confirmation_code на адрес api/v1/auth/token/. Данный токен в дальнейшем используется для доступа к своему профилю и возможности комментирования отзывов и указания рейтинга.

Пользовательские роли.

  • Анонимный пользователь - всем незарегистрированным пользователям доступен список произведений, просмотр рейтинга и комментариев;
  • Зарегистрированный пользователь - зарегистрированные пользователи имеют доступ к созданию и редактированию отзыва на произведение, оценке рейтинга произведения, комментирование отзывов;
  • Модератор - расширенная версия зарегистрированного пользователя, модераторы могут дополнительно удалять отзывы и комментарии;
  • Администратор - имеет исключительные права на редактирование и удаление содержимого проекта: произведения, категории, жанры, отзывы и комментарии;
  • Суперпользователь - суперпользователь django, обладает правами администратора.

Примеры использования.

Для удобства выполнения запросов к API можно воспользоваться запросами из папки postman_collection/. Некоторые примеры запросов к API:

• Получение списка произведений, метод GET:

http://127.0.0.1:8000/api/v1/titles/

• Создание отзыва к произведению, метод POST:

http://127.0.0.1:8000/api/v1/titles/<title_id>/reviews/

{
    "text": "User review",
    "score": 4
}

Технологии, использованные в проекте.

  • Django v.3.2
  • Django REST framowork v.3.12.4
  • Django REST framowork simple JWT token v.4.7.2

Разработчики проекта.

  • Клешнев Роман (telegram - @metandr)
  • Андронов Андрей (telegram - @andr2ei)
  • Райлян Юлия (telegram - @YuliaRay)