Skip to content

Latest commit

 

History

History
104 lines (82 loc) · 4.95 KB

README.md

File metadata and controls

104 lines (82 loc) · 4.95 KB

YaMDb API

Описание

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

Технологии

  • Python 3.7
  • Django 2.2
  • Django Rest Framework 3.12.4
  • Simple-JWT 5.2.0

Особенности

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

Установка

  • склонировать репозиторий
git clone github.com/Vitaly1996/yatube.git
  • создать и активировать виртуальное окружение для проекта
python -m venv venv
source venv/scripts/activate (Windows)    
source venv/bin/activate (MacOS/Linux)
python3 -m pip install --upgrade pip
  • установить зависимости
python pip install -r requirements.txt
  • сделать миграции
python manage.py makemigrations
python manage.py migrate
  • запустить сервер
python manage.py runserver

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

Для доступа к 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/

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