Проект YaMDb собирает отзывы (Review) пользователей на произведения (Titles). Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий (Category) может быть расширен (например, можно добавить категорию «Изобразительное искусство» или «Ювелирка»).
Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.
В каждой категории есть произведения: книги, фильмы или музыка. Например, в категории «Книги» могут быть произведения «Винни Пух и все-все-все» и «Марсианские хроники», а в категории «Музыка» — песня «Давеча» группы «Насекомые» и вторая сюита Баха. Произведению может быть присвоен жанр (Genre) из списка предустановленных (например, «Сказка», «Рок» или «Артхаус»). Новые жанры может создавать только администратор.
Благодарные или возмущённые читатели оставляют к произведениям текстовые отзывы (Review) и выставляют произведению рейтинг (оценку в диапазоне от одного до десяти). Из множества оценок высчитывается средняя оценка произведения.
- Получить список всех отзывов
- Создать новый отзыв
- Получить отзыв по id
- Частично обновить отзыв по id
- Удалить отзыв по id
- Получить список всех комментариев к отзыву по id
- Создать новый комментарий для отзыва
- Получить комментарий для отзыва по id
- Частично обновить комментарий к отзыву по id
- Удалить комментарий к отзыву по id
- Отправление confirmation_code на переданный email
- Получение JWT-токена в обмен на email и confirmation_code
- Получить список всех пользователей
- Создание пользователя
- Получить пользователя по username
- Изменить данные пользователя по username
- Удалить пользователя по username
- Получить данные своей учетной записи
- Изменить данные своей учетной записи
- Получить список всех категорий
- Создать категорию
- Удалить категорию
- Получить список всех жанров
- Создать жанр
- Удалить жанр
- Получить список всех объектов
- Создать произведение для отзывов
- Информация об объекте
- Обновить информацию об объекте
- Удалить произведение
Документация к API доступна по адресу http://127.0.0.1/redoc/
Прежде, чем приступать к работе, необходимо знать, что Docker установлен. Для этого достаточно ввести:
docker -vИли скачайте Docker Desktop для Mac или Windows. Docker Compose будет установлен автоматически. В Linux убедитесь, что у вас установлена последняя версия Compose. Также вы можете воспользоваться официальной инструкцией.
Введите команду:
git clone https://github.com/DenisSivko/infra_sp2.gitПример:
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432Для запуска необходимо выполнить из директории с проектом команду:
docker-compose up -dСоздаем и применяем миграции:
docker-compose exec web python manage.py makemigrations --noinput
docker-compose exec web python manage.py migrate --noinputВыполните команду:
docker-compose exec web python manage.py collectstatic --no-input Для заполнения базы тестовыми данными вы можете использовать файл fixtures.json, который находится в infra_sp2. Выполните команду:
docker-compose exec web python manage.py loaddata fixtures.jsonСоздание суперпользователя:
docker-compose exec web python manage.py createsuperuserОстановить работу всех контейнеров можно командой:
docker-compose downДля пересборки и запуска контейнеров воспользуйтесь командой:
docker-compose up -d --build Мониторинг запущенных контейнеров:
docker statsОстанавливаем и удаляем контейнеры, сети, тома и образы:
docker-compose down -vДля формирования запросов и ответов использована программа Postman.
Отправляем POST-запрос на адрес http://127.0.0.1/api/v1/auth/email/
- Обязательное поле:
email
POST http://127.0.0.1/api/v1/auth/email/
Content-Type: application/json
{
"email": "<EMAIL>"
}Код подтверждения будет доступен по адресу api_yamdb\sent_emails\file.log
Отправляем POST-запрос для получения JWT-токена на адрес http://127.0.0.1/api/v1/auth/token/.
- Обязательное поле:
email, - Обязательное поле:
confirmation_code
POST http://127.0.0.1/api/v1/auth/token/
Content-Type: application/json
{
"email": "<EMAIL>",
"confirmation_code": "<CONFIRMATION CODE>"
}Отправляем GET-запрос на адрес http://127.0.0.1/api/v1/titles/.
GET http://127.0.0.1/api/v1/titles/
Content-Type: application/jsonОтправляем POST-запрос на адрес http://127.0.0.1/api/v1/titles/1/reviews/.
Оценка произведения производится по 10-ти бальной шкале.
POST http://127.0.0.1/api/v1/titles/1/reviews/
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjY0MDIyOTU2LCJqdGkiOiJhOThhNzY5ZjM3MjQ0OGI2YjNkZmU2ZWZhZTk3ZjQ5MyIsInVzZXJfaWQiOjN9.up2BFy3C_Yd3WrsiZLO3EQbZ5DZMqqmfAOXF0lrlIw0
Content-Type: application/json
{
"text": "<REVIEW TEXT>",
"score": <RATING>
}