Vitaly1996 / yamdb_final

yamdb_final

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

YaMDb API

Описание

Проект представляет собой API для проекта api-yamdb. Проект YaMDb собирает отзывы (Review) пользователей на произведения (Titles). Произведения делятся на категории: «Книги», «Фильмы», «Музыка». В каждой категории есть произведения: книги, фильмы или музыка. Произведению может быть присвоен жанр (Genre) из списка предустановленных. Новые жанры может создавать только администратор. Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы (Review) и ставят произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). На одно произведение пользователь может оставить только один отзыв.

example workflow

Технологии

  • Python 3.7
  • Django 2.2
  • Django Rest Framework 3.12.14
  • Simple-JWT 5.2.0
  • Docker 20.10.18

Особенности

  • применены вьюсеты;
  • для аутентификации использованы JWT-токены;
  • у неаутентифицированных пользователей доступ к API только на чтение;
  • аутентифицированным пользователям разрешено изменение и удаление своего контента, в остальных случаях доступ предоставляется только для чтения;
  • для загрузки проекта применен Docker, подготовлены файлы для развертывания инфраструктуры;
  • настроены Continuous Integration и Continuous Deployment;

Установка

  • склонировать репозиторий
git clone github.com/Vitaly1996/yatube.git
  • в директории infra_sp2/infra/ создаем файл .env и записываем в него следующие переменные окружения: DB_ENGINE=django.db.backends.postgresql DB_NAME=<имя базы данных> POSTGRES_USER=<ваш_логин для подключения к базе данных> POSTGRES_PASSWORD=<ваш_пароль для подключения к базе данных> DB_HOST=<название сервиса(контейнера)> DB_PORT=<порт для подключения к базе данных>

  • в директории infra_sp2/infra/ выполняем команду для сбора контейнров

docker-compose up -d --build
  • внутри собранных котейнеров создаем и выполняем миграции, создаем суперпользователя и собираем статику
docker-compose exec web python manage.py makemigrations users
docker-compose exec web python manage.py migrate
docker-compose exec web python manage.py createsuperuser
docker-compose exec web python manage.py collectstatic --no-input
  • проект доступен по адресу http://<IP вашей машины>/

Получение персонального токена

Для доступа к API необходимо получить токен:

  • нужно выполнить POST-запрос localhost:8000/api/v1/auth/signup/ передав поля username и email. API отправляет письмо с кодом подтверждения (confirmation_code) на указанный адрес email;

  • пользователь отправляет POST-запрос с параметрами username и confirmation_code на
    эндпоинт /api/v1/auth/token/,в ответе на запрос ему приходит token (JWT-токен);

  • после регистрации и получения токена пользователь может отправить PATCH-запрос на эндпоинт /api/v1/users/me/ и заполнить поля в своём профайле.

  • затем, отправляя токен с каждым запросом, можно будет обращаться к методам, например:

/api/v1/titles/ (GET, POST, PATCH, DELETE)    
/api/v1/genre/ (GET, POST, DELETE)    
/api/v1/categories/ (GET, POST, DELETE)    
  • при отправке запроса необходимо передать токен в заголовке Authorization: Bearer <токен>.

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

Полный список эднпоинтов при развернутом проекте приведен по адресу: .../redoc/

Над проектом работали:Лев Подъельников|Виталий Сергеев|Ксения Зверева

About

yamdb_final


Languages

Language:Python 97.8%Language:HTML 1.4%Language:Dockerfile 0.4%Language:Shell 0.4%