vamotest / yamdb_final

yamdb_final

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

yamdb

REST API для сервиса YaMDb — базы отзывов о фильмах, книгах и музыке.

Index

  1. Описание
  2. Документация
  3. Алгоритм регистрации пользователей
  4. Пользовательские роли
  5. Доступные методы
  6. Использование
  7. Технологии
  8. Участники

Описание

API для сервиса YaMDb. Позволяет работать со следующими сущностями:

  • Отзывы:

    • получить список всех отзывов;
    • создать новый отзыв;
    • получить отзыв по id;
    • частично обновить отзыв по id;
    • удалить отзыв по id.
  • Комментарии к отзывам:

    • Получить список всех комментариев к отзыву по id;
    • создать новый комментарий для отзыва, получить комментарий для отзыва по id;
    • частично обновить комментарий к отзыву по id;
    • удалить комментарий к отзыву по id.
  • JWT-токен:

    • Отправление confirmation_code на переданный email;
    • получение JWT-токена в обмен на email и confirmation_code.
  • Пользователи:

    • получить список всех пользователей;
    • создание пользователя получить пользователя по username;
    • изменить данные пользователя по username;
    • удалить пользователя по username;
    • получить данные своей учетной записи;
    • изменить данные своей учетной записи.
  • Категории (типы) произведений:

    • получить список всех категорий;
    • создать категорию;
    • удалить категорию.
  • Категории жанров:

    • получить список всех жанров
    • создать жанр;
    • удалить жанр.
  • Произведения, к которым пишут отзывы:

    • получить список всех объектов;
    • создать произведение для отзывов;
    • информация об объекте;
    • обновить информацию об объекте;
    • удалить произведение.

Документация

Полная документация API

Алгоритм регистрации пользователей

  1. Пользователь отправляет запрос с параметром email на /auth/email/.
  2. YaMDB отправляет письмо с кодом подтверждения (confirmation_code) на адрес email.
  3. Пользователь отправляет запрос с параметрами email и confirmation_code на /auth/token/, в ответе на запрос ему приходит token (JWT-токен).
  4. При желании пользователь отправляет PATCH-запрос на /users/me/ и заполняет поля в своём профайле (описание полей — в документации).

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

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

Доступные методы:

/api/v1/posts (GET, POST, PUT, PATCH, DELETE)
/api/v1/posts/<id> (GET, POST, PUT, PATCH, DELETE)
/api/v1/posts/<id>/comments (GET, POST, PUT, PATCH, DELETE)
/api/v1/posts/<id>/comments/<id> (GET, POST, PUT, PATCH, DELETE)
/api/v1/group/ (GET, POST)
/api/v1/follow/ (GET, POST)

Использование

  1. .env.template
cat .env.template
SECRET_KEY
DEBUG
DJANGO_ALLOWED_HOSTS
DEFAULT_FROM_EMAIL
DB_ENGINE
DB_NAME
POSTGRES_USER
POSTGRES_PASSWORD
DB_HOST
DB_PORT
  1. При каждом push в ветку master разворачивается и деплоится новая версия приложения:
on:
  push:
    branches:
      - master

Технологии

Участники

  • vamotest - управление пользователями (Auth и Users):
    • система регистрации и аутентификации;
    • права доступа, работа с токеном;
    • система подтверждения e-mail, поля.
  • kleine-alberta - категории (Categories), жанры (Genres) и произведения (Titles):
    • модели и view;
    • эндпойнты.
  • MrGrumpy87 - отзывы (Review) и комментарии (Comments):
    • модели и view;
    • эндпойнты;
    • права доступа для запросов;
    • рейтинги произведений.

About

yamdb_final


Languages

Language:Python 96.7%Language:HTML 1.8%Language:Dockerfile 1.1%Language:Shell 0.4%