REST API
для проекта Yatube на Django Rest Framework (DRF), позволяющий пользователям публиковать посты, комментировать их и подписываться на других пользователей.
- 📄 Возможности CRUD операций над
API
- 💬 Комментирование и просматривание постов
- ✅ Система подписок на других пользователей
- 👀 Просмотр групп с постами
- 🔐 Аутентификация с помощью JWT
-
Клонируйте репозиторий:
git clone (https://github.com/forbxpg/api_final_yatube.git)
-
Создайте виртуальное окружение и активируйте его:
python -m venv env source env/bin/activate # для Linux/Mac .\env\Scripts\activate # для Windows
-
Установите зависимости:
cd api_final_yatube pip install -r requirements.txt
-
Выполните миграции:
cd yatube_api python manage.py makemigrations python manage.py migrate
-
Создайте суперпользователя:
python manage.py createsuperuser
-
Запустите сервер разработки:
python manage.py runserver
.
├── api
│ └── templates
└── redoc.html # Шаблон для документации к API [ReDoc]
│ ├── apps.py # Конфигурация приложения API
│ ├── serializers.py # Сериализаторы моделей
│ ├── views.py # Представления API
│ ├── urls.py # Маршруты API
│ └── permissions.py # Модуль для разрешений к проекту
├── posts
│ └── models.py # Модели, используемые в БД
├── yatube_api
│ └── settings.py # Файл с настройками проекта
├── static
│ └── redoc.yaml # Документация к API
└── requirements.txt # Список использованных зависимостей
- POST
/api/v1/token/
— Получить JWT-токен - POST
/api/v1/token/refresh/
— Обновить JWT-токен
- GET
/api/v1/posts/
— Получить список публикаций - POST
/api/v1/posts/
— Создать новый пост - GET
/api/v1/posts/{post_id}/
— Получить пост по ID - PATCH
/api/v1/posts/{post_id}/
— Обновить пост (только автор) - DELETE
/api/v1/posts/{post_id}/
— Удалить пост (только автор)
- GET
/api/v1/posts/{post_id}/comments/
— Список комментариев к посту - POST
/api/v1/posts/{post_id}/comments/
— Добавить комментарий - PATCH
/api/v1/posts/{post_id}/comments/{comment_id}/
— Изменить комментарий (только автор) - DELETE
/api/v1/posts/{post_id}/comments/{comment_id}/
— Удалить комментарий (только автор)
- GET
/api/v1/follow/
— Список подписок - POST
/api/v1/follow/
— Подписаться на пользователя
- GET
/api/v1/groups/
— Список групп - GET
/api/v1/groups/{group_id}/
— Получить информацию о группе
curl -X POST http://localhost:8000/api/v1/posts/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <твой_токен>" \
-d '{"text": "Это база!"}'
curl -X POST http://localhost:8000/api/v1/posts/1/comments/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <твой_токен>" \
-d '{"text": "Не, это баян."}'
curl -X POST http://localhost:8000/api/v1/follow/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <твой_токен>" \
-d '{"following": "username"}'
- Django Rest Framework — Создание CRUD-операций для
API
- Djoser — Аутентификация через
JWT
-токены - Base64 — Кодирование изображений для
JSON
- OnlyAuthorPermission — Изменять и удалять контент может только автор
Для просмотра документации перейдите по адресу:
http://localhost:8000/redoc/
🌟 Если проект вам понравился, не забудьте поставить ⭐ на GitHub!