Проект "API для Yatube" представляет собой REST API, который позволяет получать доступ к постам, комментариям, группам и подпискам блога Yatube в зависимости от статуса пользователя. В проекте реализованы пермишены, фильтрации, сортировки и поиск по запросам клиентов, реализована пагинация ответов от API, установлено ограничение количества запросов к API. Данный проект решает задачу предоставления удобного взаимодействия с блогом Yatube через API.
- Это приложение простое в использовании.
- Для аутентификации используются JWT-токены.
- Информация доступна как для незарегистрированных пользователей (доступ к API только на чтение), так и для зарегистрированных.
- Исключение — эндпоинт /follow/: доступ к нему возможен только аутентифицированным пользователям.
- Аутентифицированным пользователям разрешено изменение и удаление своего контента; в остальных случаях доступ предоставляется только для чтения.
В процессе разработки возникли некоторые сложности, которые были успешно преодолены. Одной из таких сложностей было определение прав доступа к API в зависимости от статуса пользователя. Для решения данной задачи была реализована аутентификация по JWT-токену.
Также было решено использовать Django REST framework для создания API, что позволило ускорить процесс разработки и сделать API более гибким и удобным в использовании. В целом, процесс разработки прошел успешно, и был получен удобный и надежный API для взаимодействия с блогом Yatube.
Для установки и запуска проекта необходимо выполнить шаги, перечисленные в разделе "Установка и запуск проекта" файла README.md.
Для установки и запуска проекта необходимо выполнить следующие шаги:
- Склонировать репозиторий:
git clone https://github.com/sanfootball/api_final_yatube
- Перейти в директорию с проектом:
cd api_final_yatube
- Создать виртуальное окружение и активировать его:
python -m venv venv
source venv/Scripts/activate
- Установить зависимости:
pip install -r requirements.txt
- Применить миграции:
python manage.py migrate
- Запустить сервер:
python manage.py runserver
API Yatube возвращает ответы в формате JSON.
GET-запрос на получение списка публикаций или публикации по id:
http://127.0.0.1:8000/api/v1/posts/
http://127.0.0.1:8000/api/v1/posts/{id}/
Ответ:
{
"id": 1,
"text": "Новый пост",
"author": "admin",
"group": null,
"image": null,
"pub_date": "2022-01-03T10:00:39.364506Z",
"comments": []
}
GET-запрос на получение списка всех публикаций с указанием параметров limit и offset:
-
limit - какое число объектов вернётся
-
offset - с какого по счёту объекта начнется отсчёт
http://127.0.0.1:8000/api/v1/posts/?limit=2&offset=2
API возвращает список с пагинацией:
Ответ:
{
"count": 4,
"next": null,
"previous": "http://127.0.0.1:8000/api/v1/posts/?limit=2",
"results": [
{
"id": 3,
"text": "И еще один новый пост",
"author": "admin",
"group": null,
"image": null,
"pub_date": "2022-01-05T08:44:55.037434Z",
"comments": []
},
{
"id": 4,
"text": "Новый пост №4",
"author": "admin",
"group": null,
"image": null,
"pub_date": "2022-01-05T08:45:19.129408Z",
"comments": []
}
]
}
Документация API доступна по адресу: http://localhost:8000/redoc/
- Python 3.9.10
- Django 3.2.16
- Django REST framework 3.12.4
- JWT + Djoser
Автор: Александр Трубников
E-mail: petrovskii1980@mail.ru
Telegram: https://t.me/sanfootball