Skip to content

lanazzk/api_yamdb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API к сервису YaMDb


Описание сервиса


Сервис YaMDb собирает отзывы (Review) пользователей на произведения (Titles). Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий (Category) может быть расширен администратором (например, можно добавить категорию «Изобразительное искусство» или «Ювелирка»). Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.

В каждой категории есть произведения: книги, фильмы или музыка. Например, в категории «Книги» могут быть произведения «Винни-Пух и все-все-все» и «Марсианские хроники», а в категории «Музыка» — песня «Давеча» группы «Насекомые» и вторая сюита Баха. Произведению может быть присвоен жанр (Genre) из списка предустановленных (например, «Сказка», «Рок» или «Артхаус»). Новые жанры может создавать только администратор.

Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы (Review) и ставят произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). На одно произведение пользователь может оставить только один отзыв.

Технологии

  • Python 3.8
  • Django 3.2
  • Django Rest Framework
  • Simple-JWT
  • PostreSQL

Документация к сервису находится по адресу (после установки и запуска):

http://127.0.0.1:8000/redoc/

Установка и запуск

Склонировать репозиторий

git clone [email protected]:lanazzk/api_yamdb.git

Создать и активировать виртуальное окружение

python -m venv venv

source venv\bin\activate

Создать и активировать виртуальное окружение

python -m venv venv

source venv\bin\activate

Обновить pip

python -m pip install --upgrade pip

Установить зависимости из файла requirements.txt

pip install -r requirements.txt

Выполнить миграции

python manage.py migrate

Запустить сервер

python manage.py runserver

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

Регистрация нового пользователя:

Получить код подтверждения на переданный email.Поля email и username должны быть уникальными.

POST /auth/signup/
{
  "email": "string",
  "username": "string"
}

Запрос на получение токена авторизации:

Получение JWT-токена в обмен на username и confirmation code.

POST auth/token/
{
  "username": "Ваш логин",
  "confirmation_code": "Код подтверждения"
}

Ответ:

{
  "token": "Токен для авторизации на сервисе"
}

Работа с API для пользователей:

Создать категорию.

Права доступа: Администратор. Поле slug каждой категории должно быть уникальным.
POST /categories/
json
{
  "name": "string",
  "slug": "string"
}

Удалить категорию.

Права доступа: Администратор.
DELETE /categories/{slug}

Получение списка всех произведений.

Права доступа: Доступно без токена
GET /titles/
[
  {
    "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"
        }

Добавление нового отзыва

Права доступа: Аутентифицированные пользователи.
POST /titles/{title_id}/reviews/
{
  "text": "string",
  "score": 1
}
Ответ
{
  "id": 0,
  "text": "string",
  "author": "string",
  "score": 1,
  "pub_date": "2019-08-24T14:15:22Z"
}

Полный список можно посмотреть в документации. http://127.0.0.1:8000/redoc/

Contributors:

Виталий - система аутентификации, авторизации, управление доступом пользователей.

Светлана - категории (Categories), жанры (Genres) и произведения (Titles): модели, представления и эндпойнты для них, определяет права доступа для запросов.

Максим - отзывы (Review) и комментарии (Comments): модели, представления, настраивает эндпойнты, определяет права доступа для запросов. рейтинги произведений.

Лицензия MIT

About

API service for write reviews, rate different categories and genres of titles

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors