REST API проекта сбора отзывов и оценок пользователей на произведения.
Как развернуть наш проект у себя.
- Склонируйте репозиторий
$ git clone https://github.com/aaaaaaaalesha/api_yamdb.git
$ cd api_yamdb
- Создайте и активируйте виртуальное окружение
$ python3 -m venv venv
$ venv/bin/activate
- Установите зависимости
$ pip install -r requirements.txt
- Выполните миграции
$ cd api_yamdb
$ python3 manage.py makemigrations
$ python3 manage.py migrate
$ cd ..
- Запуск сервера
$ python3 .\api_yamdb\manage.py runserver
- Импортирование тестовых данных из CSV в базу данных
$ cd api_yamdb
$ python3 manage.py import_database [path, ...]
, где path
- путь до директории с csv-файлами или до самих файлов по отдельности, параметр опциональный, по умолчанию
файлы будут взяты из директории /api_yamdb/static/data
.
Некоторые примеры запросов к API. Более подробную информацию можно посмотреть после запуска проекта на странице Redoc, например: http://127.0.0.1:8000/redoc/
Получить код подтверждения на переданный email
. Права доступа: Доступно без токена. Использовать имя 'me' в качестве username
запрещено. Поля email
и username должны быть уникальными.
[POST] /api/v1/auth/signup/
{
"email": "bla2132143@yandex.ru",
"username": "login123"
}
Status Code: 200
{
"email": "bla2132143@yandex.ru",
"username": "login123"
}
При этом пользователю приходит письмо следующего содержания:
From: yamdb@yandex.ru
To: bla2132143@yandex.ru
Date: Wed, 08 Feb 2023 17:48:42 -0000
Message-ID: <167587852265.2372.2942627407382418585@PC>
Привет, login123!
Нам пришёл запрос на регистрацию от Вас. Если это были не Вы, игнорируйте это письмо!
Ваш код подтверждения: OCMH5
Для окончания регистрации Вам необходимо выполнить запрос:
[POST] /auth/token/
{
"username": "login123",
"confirmation_code": "OCMH5"
}
Получение JWT-токена в обмен на username и confirmation code. Права доступа: Доступно без токена.
[POST] /api/v1/auth/token/
{
"username": "login123",
"confirmation_code": "OCMH5"
}
Status Code: 200
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjc4Mjk4MDk4LCJpYXQiOjE2NzU4Nzg4OTgsImp0aSI6ImFhOWY1ZjZlMmE2MzQzMGE5MjhkMWI1Yjg0NTNmYWFhIiwidXNlcl9pZCI6MX0.ipOVw6wvRs57COYm8J0ozm-HzHrcX9Rqm6taxr74Xe4"
}
Создать категорию. Права доступа: Администратор. Поле slug каждой категории должно быть уникальным.
[POST] /api/v1/categories/
{
"name": "Фильм",
"slug": "film"
}
Status Code: 201
{
"name": "Фильм",
"slug": "film"
}
Добавить жанр. Права доступа: Администратор. Поле slug каждого жанра должно быть уникальным.
[POST] /api/v1/genres/
{
"name": "Боевик",
"slug": "action"
}
Status Code: 201
{
"name": "Боевик",
"slug": "action"
}
Автор | Контакт |
---|---|
Алексей Александров (teamlead) | @aaaaaaaalesha |
Ольга Панарина | @OlgaPanarina |
Максим Ласточкин | @Mificus |