Yatube - социальная сеть для публикации личных дневников. Проект предоставляет пользователям возможность зарегистрироваться, создать, отредактировать или удалить собственный пост, прокомментировать пост другого автора и подписаться на него. Реализованы возможности поиска и фильтрации данных. Через этот интерфейс могут работать мобильное приложение или чат-бот; данные через этот API можно передавать на фронтенд.
Клонировать репозиторий и перейти в него в командной строке:
git clone https://github.com/yandex-praktikum/kittygram.git
cd kittygram
Cоздать и активировать виртуальное окружение:
python3 -m venv env
source env/bin/activate
Установить зависимости из файла requirements.txt:
python3 -m pip install --upgrade pip
pip install -r requirements.txt
Выполнить миграции:
python3 manage.py migrate
Запустить проект:
python3 manage.py runserver
api/v1/api-token-auth/ (POST): передать логин и пароль, чтобы получить токен.
api/v1/posts/ (GET, POST): получить список всех постов или создать новый пост.
api/v1/posts/{post_id}/ (GET, PUT, PATCH, DELETE): получить, редактировать или удалить пост по id.
api/v1/groups/ (GET): получить список всех групп.
api/v1/groups/{group_id}/ (GET): получить информацию о группе по id.
api/v1/posts/{post_id}/comments/ (GET, POST): получить список всех комментариев поста с id=post_id или создать новый, указав id поста, который хотим прокомментировать.
api/v1/posts/{post_id}/comments/{comment_id}/ (GET, PUT, PATCH, DELETE): получить, редактировать или удалить комментарий по id у поста с id=post_id.
[POST] .../api/v1/posts/
{
"text": "Вечером собрались в редакции «Русской мысли», чтобы поговорить о народном театре. Проект Шехтеля всем нравится.",
"group": 1
}
Пример ответа:
{
"id": 14,
"text": "Вечером собрались в редакции «Русской мысли», чтобы поговорить о народном театре. Проект Шехтеля всем нравится.",
"author": "anton",
"image": null,
"group": 1,
"pub_date": "2021-06-01T08:47:11.084589Z"
}
[POST] .../api/v1/posts/14/comments/
{
"text": "тест тест",
}
Пример ответа:
{
"id": 4,
"author": "anton",
"post": 14,
"text": "тест тест",
"created": "2021-06-01T10:14:51.388932Z"
}
[GET] .../api/v1/groups/2/
Пример ответа:
{
"id": 2,
"title": "Математика",
"slug": "math",
"description": "Посты на тему математики"
}