Skip to content

slapeach/infra_sp2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

api_yamdb

Описание проекта

Проект YaMDb собирает отзывы пользователей на произведения. Произведения делятся на категории: «книги», «фильмы», «музыка». Список категорий расширяется командой. Проект «YaMDb» реализован на Django, в свою очередь «API для YaMDb» реализован с использованием библиотеки Django REST Framework (DRF). DRF мощный и гибкий инструмент для построения Web API, который имеет следующие преимущества:

  • Крайне удобная для разработчиков браузерная версия API;
  • Наличие пакетов для OAuth1a и OAuth2 авторизации;
  • Сериализация, поддерживающая ORM и не-ORM источники данных;
  • Возможность полной и детальной настройки - можно использовать обычные представления-функции, если вы не нуждаетесь в мощном функционале;
  • Расширенная документация и отличная поддержка сообщества.

Через API Yatube можно публиковать отзывы и делиться своим мнением в комментариях.

В данном проекте используется Docker, поэтому проект можно развернуть в контейнерах и не беспокоиться о настройке окружения.

Как запустить приложения в контейнерах

Клонировать репозиторий и перейти в него в командной строке:

git clone git@github.com:slapeach/infra_sp2.git
cd infra_sp2

Перейти в директорию infra и создать файл .env (шаблон наполнения env-файла - ниже):

cd infra
touch .env

После заполнения env-файла по шаблону собирается проект и запускаются контейнеры:

docker-compose build
docker-compose up

Для того, чтобы пересобрать и запустить контейнеры, используется команда:

docker-compose up -d --build

Далее выполняются миграции, создается суперпользователь, собирается статика:

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

Чтобы остановить контейнеры, введите команду:

docker-compose down -v

Шаблон наполнения env-файла

Указываем, что работаем с postgresql

DB_ENGINE=django.db.backends.postgresql

Указываем имя базы данных

DB_NAME=postgres

Логин для подключения к базе данных

POSTGRES_USER=username

Устанавливаем пароль для подключения в БД

POSTGRES_PASSWORD=user_password

Указываем название сервиса (контейнера)

DB_HOST=db

Указываем порт для подключения к БД

DB_PORT=5432

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

Пример создания нового пользователя

Для создания нового пользователя отправьте POST-запрос на .../auth/signup/ с указанием имени пользователя и почты. После этого на почту придет код подтверждения регистрации.

POST /auth/signup/
{
    "username" : "newuser",
    "email" : "user@yandex.ru"
}

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

Для получения JWT-токена необходимо отправить POST-запрос на .../auth/token/ с именем пользователя и кодом, который пришел на почту.

POST /auth/token/
{
    "username" : "newuser",
    "confirmation_code" : "U3FI0MU87"
}

Будет получен ответ следующего вида:

{
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjIwODU1Mzc3LCJqdGkiOiJkY2EwNmRiYTEzNWQ0ZjNiODdiZmQ3YzU2Y2ZjNGE0YiIsInVzZXJfaWQiOjF9.eZfkpeNVfKLzBY7U0h5gMdTwUnGP3LjRn5g8EIvWlVg"
}

Токен необходим для дальнейшей работы с API для YaMDb. Чтобы обновить токен, необходимо так же отправить запрос POST /auth/token/ с указанием имени пользователя и кодом подтверждения.

Дополнение информации в профиле Для изменения информации о себе необходимо отправть PATCH-запрос на .../users/me/

POST /api/v1/users/me/
{
    "username": "string",
    "email": "user@example.com",
    "first_name": "string",
    "last_name": "string",
    "bio": "string",
}

Получение списка категорий Вы можете ознакомиться со списком всех категорий произведений, отправив GET-запрос на /api/v1/categories/

GET /api/v1/categories/

Получение списка жанров Также Вы можете ознакомиться со списком всех жанров произведений, отправив GET-запрос на /api/v1/genres/

GET /api/v1/genres/

Получение списка всех произведений Можно получить список всех произведений, отправив GET-запрос на /api/v1/titles/

GET /api/v1/titles/

Пример добавления нового отзыва Отзыв можно отправить на любое произведение, указав его id: /api/v1/titles/{title_id}/reviews/

POST /api/v1/titles/{title_id}/reviews/
{
    "text": "string",
    "score": 1
}

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

GET /api/v1/titles/{title_id}/reviews/

Добавления нового комментария к отзыву на произведение

POST /api/v1/titles/{title_id}/reviews/{review_id}/comments/
{
    "text": "string"
}

Получение списка всех комментариев в отзыву

GET /api/v1/titles/{title_id}/reviews/{review_id}/comments/

Об авторах

«API для YaMDb» выполнен командой из трех мотивированных разработчиков в рамках процесса обучения в Яндекс Практикуме. Это был новый и захватывающий опыт взаимодействия в команде, в результате которого получился интересный проект. Я, Алена, добавила к приложению Docker и все сопутствующее, чтобы любой желающий мог познакомиться нашим проектом без затруднений!

Releases

No releases published

Packages

No packages published