/api_final_yatube

api final yatube

Primary LanguagePython

api_final

Api для yatube основан на JWTAuthentication.
Он может принимать анонимные запросы для получиения всех публикаций, комментариев, сообществ.
А также запросы на конкретный обьект.
Чтобы обработать запросы на создание публикаций и комментариев, пользователю необходимо пройти аутентификацию.
Аутентифицированный пользователь авторизован на изменение и удаление своего контента; в остальных случаях доступ предоставляется только для чтения. При попытке изменить чужие данные возвращается код ответа 403 Forbidden.

Также в проекте описана модель Follow.
он принимает два метода:
GET — возвращает все подписки пользователя, сделавшего запрос. Возможен поиск по подпискам по параметру search.
POST — подписать пользователя, сделавшего запрос на пользователя, переданного в теле запроса. При попытке подписаться на самого себя, пользователь должен получить информативное сообщение об ошибке. Проверка осуществляется на уровне API.

Стеки использованых технологий:
Python==3.8
Django==3.2.16
pytest==6.2.4
pytest-pythonpath==0.7.3
pytest-django==4.4.0
djangorestframework==3.12.4
djangorestframework-simplejwt==4.7.2
django-filter==23.2
Pillow==9.3.0
PyJWT==2.1.0
requests==2.26.0

Как запустить проект:

Клонировать репозиторий и перейти в него в командной строке:
windows / linux

git clone https://github.com/saikal12/api_yatube.git

cd yatube_api

Cоздать и активировать виртуальное окружение:
Windows
pyhon -m venv venv

venv\Scripts\activate.bat
Linux/macOS

python3 -m venv venv
sourse venv/bin/activate

Обновить PIP:
Windows
python -m pip install --upgrade pip
Linux/macOS
python3 -m pip install --upgrade pip

Установить зависимости из файла requirements.txt:
pip install -r requirements.txt
pip install -r requirements.txt

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

Windows
python manage.py makemigrations
python manage.py migrate

Linux/macOS

python3 manage.py makemigrations
python3 manage.py migrate

Запустить проект:

Windows

python manage.py runserver

Linux/macOS

python3 manage.py runserver

Для взаимодействия с ресурсами описаны и настроены такие эндпоинты:
-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): Возвращает все подписки пользователя, сделавшего запрос
-api/v1/follow/ (POST): Подписка пользователя от имени которого сделан запрос на пользователя переданного в теле запроса

saikal12 https://github.com/saikal12