Skip to content

aVeter77/yamdb_api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YaMDb API

example workflow

Проект YaMDb собирает отзывы пользователей на различные произведения

Полное описание API http://yamdb.aveter77.site/redoc/

Эндпоинты http://yamdb.aveter77.site/api/v1/

Образ доступен на Dockerhub.

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

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

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

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

Технологии

Запуск

Установите переменные среды, как в .env.example.

Docker

cd infra/
docker-compose up -d

После запуска выполните команды:

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 

Заполнение базы начальными данными

cd infra/
cat fixtures.json | docker-compose exec -T web python manage.py loaddata --format=json -

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

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

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

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

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

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

GET /api/v1/users/

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

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

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

Автор

Александр Николаев

Лицензия

MIT