hikjik / yamdb_final

Python Developer. Спринт 16. CI и CD проекта api_yamdb

Home Page:https://hikjik.hopto.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Yamdb Workflow

YaMDb REST API

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

Документация проекта: https://hikjik.hopto.org/redoc

Описание

Проект реализует REST API для сервиса YaMDb — базы отзывов о различных произведениях (фильмах, книгах, музыке и др.). API предоставляет следующие возможности:

Для неавторизованных пользователей

  • Самостоятельная регистрация с отправкой кода подтверждения на e-mail;
  • Получение JWT токена для авторизации;
  • Получение информации о произведениях, отзывах к ним, просмотр комментариев.

Для авторизованных пользователей

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

Для модераторов

  • Редактирование и удаление отзывов и комментариев других пользователей.

Для администраторов

  • Добавление и удаление категорий и жанров произведений;
  • Добавление, изменение и удаление информации о произведениях;
  • Регистрация новых пользователей;
  • Просмотр и изменение информации о зарегистрированных пользователях;
  • Удаление пользователей.

Как запустить проект:

  1. Установить docker и docker-compose согласно инструкции.

  2. Клонировать репозиторий и перейти в директорию развёртывания инфраструктуры:

git clone git@github.com:hikjik/api_yamdb.git
cd api_yamdb/infra
  1. Создать файл .env с переменными окружения для работы с базой данных по следующему образцу:
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432
  1. Запустить контейнеры:
docker-compose up -d
  1. Выполнить миграции, создать суперпользователя и собрать статику с помощью следующих команд:
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
  1. (Опционально) Загрузить резервную копию базы данных:
docker-compose run web python manage.py loaddata fixtures.json

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

  1. Самостоятельная регистрация с отправкой кода подтверждения на e-mail
POST /api/v1/auth/signup/

Тело запроса:

{
    "username": "martin",
    "email": "martin@mail.ru"
}

Пример ответа:

{
    "username": "martin",
    "email": "martin@mail.ru"
}
  1. Получение JWT токена
POST /api/v1/auth/signup/

Тело запроса:

{
    "username": "martin",
    "confirmation_code": "62v-e034fd8e1432fb4c2701"
}

Пример ответа:

{
    "token": "string"
}
  1. Получение списка произведений
GET /api/v1/titles?year=1971&category=music&genre=rock&name=deep

Пример ответа:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 30,
            "name": "Deep Purple — Smoke on the Water",
            "year": 1971,
            "rating": 10,
            "description": "",
            "genre": [
                {
                    "name": "Рок",
                    "slug": "rock"
                }
            ],
            "category": {
                "name": "Музыка",
                "slug": "music"
            }
        }
    ]
}

About

Python Developer. Спринт 16. CI и CD проекта api_yamdb

https://hikjik.hopto.org


Languages

Language:Python 97.7%Language:HTML 1.5%Language:Dockerfile 0.4%Language:Shell 0.4%