Project stack
- Python 3.7
- Django 2.2
- Django REST Framework
- Djoser
- GitHub Actions
API для проекта "YaTube". Сайт "YaTube" - это онлайн-сервис для публикации, получения записей, комментирования записей других пльзователей и подписки на авторов.
Клонируйте репозиторий:
git clone [email protected]:ThatCoderMan/foodgram-project-react.git
Установите и активируйте виртуальное окружение:
- для MacOS:
python3 -m venv venv
- для Windows:
python -m venv venv source venv/bin/activate source venv/Scripts/activate
Установите зависимости из файла requirements.txt:
pip install -r requirements.txt
Перейти в папку yatube_api/
cd yatube_api/
Примените миграции:
python manage.py migrate
В папке с файлом manage.py выполните команду для запуска локально:
python manage.py runserver
Документация к проекту доступна по адресу:
http://127.0.0.1:8000/redoc/
Создание, изменение, удаление публиакаций; добавление, изменение, удаление комментариев; получение списка подсписок и подписка на пользователей доступно только для авторизованных пользователей.
Редактировать, удалять публикации и комментарии может только автор публикации или комментария.
Пагинация при помощи параметров offset и limit
GET /api/v1/posts/
response: [{id: int; author: str; text: str; pub_date: str ; image: str binary; group: int}]
POST /api/v1/posts/
body: {text: str; image: str binary; group: int}
GET /api/v1/posts/{id}/
response: {id: int; author: str; text: str; pub_date: str ; image: str binary; group: int}
PUT /api/v1/posts/{id}/
body: {text: str; image: str binary; group: int}
PATCH /api/v1/posts/{id}/
body: {text: str; image: str binary; group: int}
DEL /api/v1/posts/{id}/
GET /api/v1/posts/{post_id}/comments/
response: [{id: int; author: str; text: str, created: str ; post: int}]
POST /api/v1/posts/{post_id}/comments/
body: {text: str}
GET /api/v1/posts/{post_id}/comments/{id}/
response: {id: int; author: str; text: str, created: str ; post: int}
PUT /api/v1/posts/{post_id}/comments/{id}/ PATCH /api/v1/posts/{post_id}/comments/{id}/
body: {text: str}
DEL /api/v1/posts/{post_id}/comments/{id}/
GET /api/v1/groups/
response: [{id: int; title: str; slug: str; description: str}]
GET /api/v1/groups/{id}/
response: {id: int; title: str; slug: str; description: str}
поиск при помощи параметра search
GET /api/v1/follow/
response: [{user: str; following: str}]
POST /api/v1/follow/
body: {following: str}
POST /api/v1/jwt/create/
body: {username: str; password: str} response: {refresh: str; access: str}
POST /api/v1/jwt/refresh/
body: {refresh: str} response: {access: str}
POST /api/v1/jwt/verify/
body: {token: str}