Проект Yatube является социальной сетью, где любой пользователь может просматривать записи интересующей группы или автора. Аутентифицированные пользователи могут создавать собственные посты, подписываться на других авторов и оставлять комментарии к записям. Изменять или удалять записи имеет право лишь автор. Посты пользователей могут быть разделены по категориям групп.
В данном проекте реализован REST API для проекта Yatube. Из проекта исключён фронтенд и view-функции приложения posts. Аутентификация по JWT-токену. Поддерживает методы GET, POST, PUT, PATCH, DELETE. Предоставляет данные в формате JSON.
Проект написан на Python с использованием веб-фреймворка Django REST Framework.
Клонировать репозиторий и перейти в него в командной строке:
git clone git@github.com:ElenaL1/api_final_yatube.git
cd api_final_yatube
Cоздать и активировать виртуальное окружение:
py -3.9 -m venv env
source env/bin/activate
Установить зависимости из файла requirements.txt:
python -m pip install --upgrade pip
pip install -r requirements.txt
Выполнить миграции:
python manage.py migrate
Запустить проект:
python manage.py runserver
В проекте предусмотрены следующие эндпоинты:
api/v1/jwt/(create/, refresh/, verify/) (POST): передаём логин и пароль,
получаем JWT-токен, обновляем JWT-токен и проверяем JWT-токен.
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.
api/v1/follow/ (GET, POST): получаем информацию о подписках и создаем подписки.
Пример POST-запроса с токеном пользователя "Anton" на добавление нового поста: POST .../api/v1/posts/
{
"text": "Вечером собрались в редакции «Русской мысли», чтобы поговорить о народном театре. Проект Шехтеля всем нравится.",
"image": null,
"group": 1
}
Пример ответа:
{
"id": 1,
"author": "Anton",
"text": "Вечером собрались в редакции «Русской мысли», чтобы поговорить о народном театре. Проект Шехтеля всем нравится.",
"pub_date": "2019-08-24T14:15:22Z",
"image": null,
"group": 1
}
Более подробно информацию об эндпоинтах и примерах запросов и ответов можно посмотреть в
/api_final_yatube/yatube_api/static/redoc.yaml