Skip to content

Учебный проект 10 спринта Яндекс Практикум.

Notifications You must be signed in to change notification settings

Klikovskiy/api_yamdb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Яндекс.Практикум - Спринт 10 - API_YaMDb

Учебный проект

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

Читатели оставляют к произведениям текстовые отзывы (Review) и выставляют рейтинг (оценку в диапазоне от 1 до 10).

Полная документация к API находится по эндпоинту: /redoc

Технологии:

  • Python 3.7
  • Django 2.2.28
  • DRF
  • JWT

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

  • Клонировать репозиторий и перейти в него в командной строке.
  • Установить и активировать виртуальное окружение c Python 3.7 (python не ниже версии 3.7):
python3 -3.7 -m venv venv
source venv/Scripts/activate
  • Установить зависимости из файла requirements.txt
python3 -m pip install --upgrade pip
pip install -r requirements.txt
  • Выполнить миграции:
python3 manage.py migrate
  • Создать суперпользователя:
python3 manage.py createsuperuser
  • Запустить проект:
python3 manage.py runserver

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

Документация доступна по эндпоинту: /redoc/

Для неавторизованных пользователей работа с API доступна в режиме чтения, что-либо изменить или создать не получится.

Права доступа: Доступно без токена.
GET /api/v1/categories/ - Получение списка всех категорий
GET /api/v1/genres/ - Получение списка всех жанров
GET /api/v1/titles/ - Получение списка всех произведений
GET /api/v1/titles/{title_id}/reviews/ - Получение списка всех отзывов
GET /api/v1/titles/{title_id}/reviews/{review_id}/comments/ - Получение списка всех комментариев к отзыву
Права доступа: Администратор
GET /api/v1/users/ - Получение списка всех пользователей

Роли:

  • Суперюзер Django — обладает правами администратора (admin)
  • Администратор (admin) — полные права на управление всего контента проекта. Возможность создавать и удалять произведения, категории и жанры. Может назначать роли пользователям.
  • Модератор (moderator) — те же права, что и у Аутентифицированного пользователя, а так же возможность удалять любые отзывы и комментарии.
  • Аноним — может просматривать описания произведений, читать отзывы и комментарии.
  • Аутентифицированный пользователь (user) — может, как и Аноним, читать всё, дополнительно он может публиковать отзывы и ставить оценку произведениям ( фильмам/книгам/песенкам), может комментировать отзывы, редактировать и удалять свои отзывы и комментарии.

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

Получение кода подтверждения на email. Права доступа: Доступно без токена. Недопустимо использовать имя 'me' в качестве username. Email и username должны быть уникальными.

Пример регистрации пользователя:

POST /api/v1/auth/signup/
{
  "email": "string",
  "username": "string"
}

Получение JWT-токена:

POST /api/v1/auth/token/
{
  "username": "string",
  "confirmation_code": "string"
}

Примеры API запросов авторизованных пользователей:

Добавление категории:

Права доступа: Администратор.
POST /api/v1/categories/
{
  "name": "string",
  "slug": "string"
}

Удаление категории:

Права доступа: Администратор.
DELETE /api/v1/categories/{slug}/

Добавление жанра:

Права доступа: Администратор.
POST /api/v1/genres/
{
  "name": "string",
  "slug": "string"
}

Удаление жанра:

Права доступа: Администратор.
DELETE /api/v1/genres/{slug}/

Обновление публикации:

PUT /api/v1/posts/{id}/
{
  "text": "string",
  "image": "string",
  "group": 0
}

Добавление произведения:

Права доступа: Администратор.
Год выпуска не может быть больше текущего года.

POST /api/v1/titles/
{
  "name": "string",
  "year": 0,
  "description": "string",
  "genre": [
    "string"
  ],
  "category": "string"
}

Добавление произведения:

Права доступа: Доступно без токена
GET /api/v1/titles/{titles_id}/
{
  "id": 0,
  "name": "string",
  "year": 0,
  "rating": 0,
  "description": "string",
  "genre": [
    {
      "name": "string",
      "slug": "string"
    }
  ],
  "category": {
    "name": "string",
    "slug": "string"
  }
}

Обновление информации о произведении:

Права доступа: Администратор
PATCH /api/v1/titles/{titles_id}/
{
  "name": "string",
  "year": 0,
  "description": "string",
  "genre": [
    "string"
  ],
  "category": "string"
}

Работа с пользователями:

Список всех пользователей.

Права доступа: Администратор
GET /api/v1/users/

Добавление пользователя:

Права доступа: Администратор
Email и username должны быть уникальными.
POST /api/v1/users/
{
  "username": "string",
  "email": "user@example.com",
  "first_name": "string",
  "last_name": "string",
  "bio": "string",
  "role": "user"
}

Получение пользователя по username:

Права доступа: Администратор
GET /api/v1/users/{username}/

Смена данных username:

Права доступа: Администратор
PATCH /api/v1/users/{username}/
{
  "username": "string",
  "email": "user@example.com",
  "first_name": "string",
  "last_name": "string",
  "bio": "string",
  "role": "user"
}

Удаление пользователя по username:

Права доступа: Администратор
DELETE /api/v1/users/{username}/

Получение данных своей учетной записи:

Права доступа: Любой авторизованный пользователь
GET /api/v1/users/me/

Смена данных своей учетной записи:

  • Права доступа: Любой авторизованный пользователь
PATCH /api/v1/users/me/

About

Учебный проект 10 спринта Яндекс Практикум.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published