Проект YaMDb собирает отзывы (Review) пользователей на произведения
(Title).
Произведения делятся на категории. Список категорий (Category) может
быть расширен.
Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм
или послушать музыку.
К каждому произведению можно оставить отзыв и оценку, на основе оценок
рассчитывается рейтинг.
Каждый отзыв может быть прокомментирован.
- Python 3.7
- Django Rest Framework 3.12.4 (библиотека для преобразования Django-приложения в REST API)
- Postman (графическая программа для тестирования API)
- PostgreSQL (система управления базами данных)
- Docker (программная платформа контейнеризации)
- Docker Compose (средство для определения и запуска приложений Docker с несколькими контейнерами)
- Nginx (веб-сервер для статики)
- Gunicorn (веб WSGI-сервер)
- GitHub Actions (сервис автоматизации тестирования, размещения и запуска проекта на сервере)
- Клонируем репозиторий и перейти в директорию infra в командной строке
git clone https://github.com/lmashik/infra_sp2.git
cd infra
- Создаем файл .env для переменных виртуального окружения и заходим в него
nano .env
- Заполняем файл значениями переменных из файла .env.example
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=<username>
POSTGRES_PASSWORD=<password>
DB_HOST=db
DB_PORT=5432
SECRET_KEY=<secret_key>
- Создаем образ и контейнеры, запускаем контейнеры в фоновом режиме
sudo docker-compose up -d
(Для новых версий docker-compose как плагина к docker
sudo docker compose up -d
)
- Выполняем миграции внутри контейнера web
sudo docker-compose exec web python manage.py migrate
или
sudo docker compose exec web python manage.py migrate
- Собираем статику
sudo docker-compose exec web python manage.py collectstatic
или
sudo docker compose exec web python manage.py collectstatic
- Открываем проект по адресу http://localhost/api/v1
или его административную часть по адресу http://localhost/admin/
При необходимости наполняем базу резервными данными 8. Узнаем id контейнера (web), в который нужно скопировать дамп
sudo docker ps
- Копируем дамп в контейнер web
sudo docker cp fixtures.json <CONTAINER_ID>:app/
- Заливаем данные в базу
sudo docker-compose exec web python manage.py loaddata fixtures.json
или
sudo docker compose exec web python manage.py loaddata fixtures.json
- Удаляем дамп из контейнера
sudo docker-compose exec web rm ./fixtures.json
или
sudo docker compose exec web rm ./fixtures.json
Для получения кода подтверждения необходимо отправить POST запрос к эндпоинту http:///api/v1/auth/signup/, в теле запроса указать:
{
"email": "[email protected]",
"username": "user"
}
При успешном завершении запроса вы получите письмо с кодом подтверждения (confirmation_code) на адрес email
Для получения токена необходимо отправить POST запрос к эндпоинту http:///api/v1/auth/token/, в теле запроса указать:
{
"username": "user",
"confirmation_code": "string"
}
При успешном завершении запроса вы получите в ответ токен:
{
"token": "string"
}
Запрос осуществляется посредством протокола HTTP 1.1 на адрес, соответствующий ресурсу. HTTP-запросы должны содержать заголовок: Authorization: Bearer <access_token>
Ответ сервиса представляет собой JSON-документ в кодировке UTF-8, содержимое зависит от запроса.
Ресурс - часть системы, с которой можно работать. В YaMDb ресурсами являются: категории, жанры, произведения, отзывы, комментарии, пользователи. У каждого ресурса уникальный URL. Для получения списка доступных ресурсов выполните GET-запрос к корневому URL API http:///api/v1/, а также к URL: http:///api/v1/titles/{title_id}/reviews/ и http:///api/v1/titles/{title_id}/reviews/{review_id}/comments/
Возможные ресурсы API:
/api/v1/categories/ (GET, POST)
/api/v1/categories/{slug}/ (DELETE)
/api/v1/genres/ (GET, POST)
/api/v1/genres/{slug}/ (DELETE)
/api/v1/titles/ (GET, POST)
/api/v1/titles/{titles_id}/ (GET, PATCH, DELETE)
/api/v1/titles/{title_id}/reviews/ (GET, POST)
/api/v1/titles/{title_id}/reviews/{review_id}/ (GET, PATCH, DELETE)
/api/v1/titles/{title_id}/reviews/{review_id}/comments/ (GET, POST)
/api/v1/titles/{title_id}/reviews/{review_id}/comments/{comment_id}/ (GET, PATCH, DELETE)
/api/v1/users/ (GET, POST)
/api/v1/{username}/ (GET, PATCH, DELETE)
/api/v1/users/me/ (GET, PATCH)
Автор yamdb_final: Мария Лапикова (Михайлова), [email protected]
Авторы YaMDb: Шовтюк Елена, Лапикова (Михайлова) Мария, Пиголкин Андрей