YaMDb - это сервис, на котором пользователи могут писать рецензии на произведения, такие как книги, фильмы, музыка и т.д.. Каждая рецензия открывает отдельный тред, в котором авторизованные пользователи могут оставлять комментарии и дискутировать.
Произведения делятся на категории, и в каждой категории есть определенные жанры. Например: Достоевский "Преступление и наказание" - это произведение в категории книги, а жанр - роман.
При написании рецензии пользователь выставляяет оценку по десятибальной шкале, на основе этих оценок у произведения формирутся рейтинг.
- Django
- Django REST Framework
- DRF Simple JWT
- SQLite
- Эмилар Локтев (@itsme_emichka)
- Никита Соловьев (@Nikita_Solovev_V)
- Евгений Обгольц (@eobgolts)
-
Клонировать репозиторий
git clone https://github.com/itsme-emichka/api_yamdb.git -
Перейти в директорию проекта
cd api_yamdb -
Создать файл
.envсо следующими переменными- SECRET_KEY
- DEBUG
-
Создать и активировать виртуальное окружение
python -m venv venv- Windows -
source venv/Scripts/activate
Linux/MacOS -source venv/bin/activate
-
Поставить зависимости
pip install -r requirements.txt -
Перейти в директорию с файлом
manage.py
cd api_yamdb -
Применить миграции
python manage.py migrate -
Запустить сервер
python manage.py runserver
Полная спецификация API доступна по адресу http://your_domain/redoc
Для тестирования API можете использовать postman-collection
GET http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/
Response:
{
"count": 0,
"next": "string",
"previous": "string",
"results": [
{
"id": 0,
"text": "string",
"author": "string",
"score": 1,
"pub_date": "2019-08-24T14:15:22Z"
}
]
}
GET http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/{review_id}/comments/
Response:
{
"count": 0,
"next": "string",
"previous": "string",
"results": [
{
"id": 0,
"text": "string",
"author": "string",
"pub_date": "2019-08-24T14:15:22Z"
}
]
}
POST http://127.0.0.1:8000/api/v1/titles/
{
"name": "string",
"year": 0,
"description": "string",
"genre": [
"string"
],
"category": "string"
}
Response:
{
"id": 0,
"name": "string",
"year": 0,
"rating": 0,
"description": "string",
"genre": [
{
"name": "string",
"slug": "string"
}
],
"category": {
"name": "string",
"slug": "string"
}
}
GET http://127.0.0.1:8000/api/v1/titles/
Response:
{
"count": 0,
"next": "string",
"previous": "string",
"results": [
{
"id": 0,
"name": "string",
"year": 0,
"rating": 0,
"description": "string",
"genre": [
{
"name": "string",
"slug": "string"
}
],
"category": {
"name": "string",
"slug": "string"
}
}
]
}