Skip to content

ElenaL1/api_yamdb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

127 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API для Yamdb

Описание проекта API для Yamdb

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

В данном проекте реализован REST API для проекта Yamdb, данные передаются в формате JSON. Аутентификация по JWT-токену.

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

Проект написан на Python с использованием веб-фреймворка Django REST Framework.

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

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

git clone git@github.com:ElenaL1/api_yamdb.git
cd api_yamdb

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

py -3.9 -m venv env - создание виртуального окружения(Windows)
python3 -m venv venv - создание виртуального окружения(linux, macOS)
source env/Scripts/activate - активация виртуального окружения(Windows)
source venv/bin/activate - активация виртуального окружения(linux, macOS)

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

python -m pip install --upgrade pip - Обновление менеджера пвкетов PIP(Windows)
python3 -m pip install --upgrade pip - Обновление менеджера пвкетов PIP(linux, macOS)
pip install -r requirements.txt

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

python manage.py migrate (Windows)
python3 manage.py migrate (linux, macOS)

Импортировать базу данных:

python manage.py csv_to_bd (Windows)
python3 manage.py csv_to_bd (linux, macOS)

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

python manage.py runserver - Запуск локального сервера(Windows)
python3 manage.py runserver - Запуск локального сервера(linux, macOS)

Создать суперпользователя для управления узлом администрирования:

python manage.py createsuperuser - (Windows)
python3 manage.py createsuperuser - (linux, macOS)

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

Пример POST-запроса на регистрацию нового пользователя: POST .../api/v1/auth/signup/

{
"email": "user@example.com",
"username": "string"
}

Пример ответа на GET-запрос на получение списка всех произведений: GET .../api/v1/titles/

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

Ресурсы API YaMDb

  • auth: аутентификация.
  • users: пользователи.
  • titles: произведения, к которым пишут отзывы.
  • categories: категории (типы) произведений («Фильмы», «Книги», «Музыка»). Одно произведение может быть привязано только к одной категории.
  • genres: жанры произведений. Одно произведение может быть привязано к нескольким жанрам.
  • reviews: отзывы на произведения. Отзыв привязан к определённому произведению.
  • comments: комментарии к отзывам. Комментарий привязан к определённому отзыву.

Более подробно информацию об эндпоинтах и примерах запросов и ответов можно посмотреть в

/api_yamdb/api_yamdb/static/redoc.yaml

About

api_yamdb

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •