Skip to content

salahamran/api_yamdb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект YaMDb

API для сервиса сбора отзывов на произведения (книги, фильмы, музыку).

Содержание

  • Технологии
  • Запуск проекта
  • API Endpoints
  • Примеры запросов
  • Роли пользователей
  • Авторы
  • Лицензия

Технологии

  • Python 3.9
  • Django 3.2
  • Django REST Framework 3.13
  • Simple JWT 5.2
  • PostgreSQL (опционально)
  • Docker (опционально)

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

Локальная разработка

  1. Клонируйте репозиторий:
git clone https://github.com/your_username/api_yamdb.git
cd api_yamdb
  1. Создайте и активируйте виртуальное окружение:
python -m venv venv
source venv/bin/activate  # для Linux/Mac
venv\Scripts\activate     # для Windows
  1. Установите зависимости:
pip install -r requirements.txt
  1. Настройте базу данных в api_yamdb/settings.py:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}
  1. Примените миграции:
python manage.py migrate
  1. Запустите сервер:
python manage.py runserver

Альтернатива: запуск в Docker

docker-compose up -d --build

API Endpoints

Аутентификация

  • POST /api/v1/auth/signup/ — регистрация пользователя
  • POST /api/v1/auth/token/ — получение JWT токена

Пользователи

  • GET /api/v1/users/ — список пользователей (только для администратора)
  • POST /api/v1/users/ — создать нового пользователя (только для администратора)
  • GET /api/v1/users/me/ — профиль текущего пользователя

Произведения

  • GET /api/v1/titles/ — список произведений
  • POST /api/v1/titles/ — добавить произведение (только админ)

Отзывы и комментарии

  • GET /api/v1/titles/{title_id}/reviews/ — список отзывов
  • POST /api/v1/titles/{title_id}/reviews/ — добавить отзыв
  • GET /api/v1/titles/{title_id}/reviews/{review_id}/comments/ — комментарии к отзыву

Документация API: http://localhost:8000/redoc/

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

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

POST /api/v1/auth/signup/
Content-Type: application/json

{
    "email": "user@example.com",
    "username": "username"
}

Получение токена

POST /api/v1/auth/token/
Content-Type: application/json

{
    "username": "username",
    "confirmation_code": "код_из_email"
}

Добавление отзыва

POST /api/v1/titles/1/reviews/
Authorization: Bearer <ваш_токен>
Content-Type: application/json

{
    "text": "Отличный фильм!",
    "score": 9
}

Роли пользователей

  • Аноним — может только читать данные
  • Пользователь (user) — может комментировать и оставлять отзывы
  • Модератор (moderator) — может удалять и редактировать чужие отзывы и комментарии
  • Администратор (admin) — имеет все права, включая управление пользователями и произведениями

Авторы

  • Александр Пак — система аутентификации
  • Иван Трифонов — управление произведениями
  • Salah Moustafa — отзывы и комментарии, тимлид

Лицензия

MIT License

About

api_yamdb

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages