Проект YaMDb собирает отзывы пользователей на различные произведения. Произведения делятся на категории и жанры.
Аутентифицированные пользователи могут оставлять к произведениям отзывы, комментарии к ним, а также присваивать произведениям рейтинг от 1 до 10.
На одно произведение пользователь может оставить только один отзыв.
Поддерживаются методы GET, POST, PATCH, DEL для пользователей, произведений, отзывов и комментариев.
Для категорий и жанров - методы GET, POST, DEL.
Для регистрации/аутентификации пользователей используется только метод POST.
Аутентификация - с помощью JWT-токенов.
Клонировать репозиторий и перейти в него в командной строке:
- Windows & Linux/MacOS:
git clone git@github.com:Wiz410/api_yamdb.git
cd api_yamdb
Cоздать и активировать виртуальное окружение:
- Windows:
python -m venv venv
source venv/Scripts/activate
- Linux/MacOS:
python3 -m venv venv
source venv/bin/activate
Установить/обновить pip и зависимости:
- Windows:
python -m pip install --upgrade pip`
pip install -r requirements.txt
- Linux/MacOS:
python3 -m pip install --upgrade pip`
pip install -r requirements.txt
Применить миграции и запустить проект:
- Windows:
python manage.py migrate
python manage.py import
python manage.py runserver
- Linux/MacOS:
python3 manage.py migrate
python3 manage.py import
python3 manage.py runserver
- Категории
/api/v1/categories/
{
"count": 3,
"next": null,
"previous": null,
"results": [
{
"name": "Фильм",
"slug": "movie"
},
{
"name": "Книга",
"slug": "book"
},
{
"name": "Музыка",
"slug": "music"
}
]
}
- Произведения
api/v1/titles/
{
"count": 32,
"next": "http://127.0.0.1:8000/api/v1/titles/?limit=5&offset=5",
"previous": null,
"results": [
{
"id": 1,
"name": "Побег из Шоушенка",
"year": 1994,
"description": null,
"genre": [
{
"name": "Драма",
"slug": "drama"
}
],
"rating": 10,
"category": {
"name": "Фильм",
"slug": "movie"
}
},
...
{
"id": 5,
"name": "Криминальное чтиво",
"year": 1994,
"description": null,
"genre": [
{
"name": "Комедия",
"slug": "comedy"
},
{
"name": "Детектив",
"slug": "detective"
},
{
"name": "Триллер",
"slug": "thriller"
}
],
"rating": 5,
"category": {
"name": "Фильм",
"slug": "movie"
}
}
]
}
- Регистрация пользователя (запрос и ответ идентичны):
{
"username": "UserTest",
"email": "UserMail@mail.ru"
}
- Присвоение токена (запрос):
{
"username": "UserTest",
"confirmation_code": "bu6fsa-2b77d51dd9c5a6748dcbf60b03969cb9"
}
- Присвоение токена (ответ):
{
"token": "eyJ0eXAiO1NiJ9.eyOjN9.yNTY8v0tbsI-GdD6E5zEQ"
}