Проект 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
Указываем, что работаем с 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 и все сопутствующее, чтобы любой желающий мог познакомиться нашим проектом без затруднений!