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оздать и активировать виртуальное окружение:
Windowspyhon -m venv venv
venv\Scripts\activate.bat
Linux/macOS
python3 -m venv venv
sourse venv/bin/activate
Обновить PIP:
Windowspython -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