Проект представляет собой API для проекта Yatube (hw05_final). Через этот интерфейс смогут работать мобильное приложение или чат-бот, можно будет передавать данные в любое приложение или на фронтенд. Работа с API доступна аутентифицированным пользователям. Удалять и изменять пользователи могут только свой контент, чужой - только читать. Анонимным пользователям доступны запросы только на чтение, кроме доступа к контенту подписок.
- Python 3.9
- Django 3.2
- Django REST framework
- JWT + Djoser
Cоздать и активировать виртуальное окружение:
python -m venv venv
-
Если у вас Linux/macOS
source venv/bin/activate
-
Если у вас Windows
.\venv\Scripts\activate
Установить зависимости из файла requirements.txt:
python -m pip install --upgrade pip
pip install -r requirements.txt
Выполнить миграции:
python manage.py migrate
Запустить проект:
python manage.py runserver
http://127.0.0.1:8000/redoc/
Получить список всех публикаций. При указании параметров limit и offset выдача должна работать с пагинацией.
GET-запрос:
http://127.0.0.1:8000/api/v1/posts/?limit=2&offset=4
Ответ:
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"id": 0,
"author": "string",
"text": "string",
"pub_date": "2021-10-14T20:41:29.648Z",
"image": "string",
"group": 0
}
]
}
Добавление новой публикации в коллекцию публикаций. Анонимные запросы запрещены.
POST-запрос:
http://127.0.0.1:8000/api/v1/posts/
Тело запроса:
{
"text": "string",
"image": "string",
"group": 0
}
Ответ:
{
"id": 0,
"author": "string",
"text": "string",
"pub_date": "2019-08-24T14:15:22Z",
"image": "string",
"group": 0
}
Получение публикации по id.
GET-запрос:
http://127.0.0.1:8000/api/v1/posts/{id}/
Ответ:
{
"id": 0,
"author": "string",
"text": "string",
"pub_date": "2019-08-24T14:15:22Z",
"image": "string",
"group": 0
}
Обновление публикации по id. Обновить публикацию может только автор публикации. Анонимные запросы запрещены.
PUT-запрос:
http://127.0.0.1:8000/api/v1/posts/{id}/
Тело запроса:
{
"text": "string",
"image": "string",
"group": 0
}
Ответ:
{
"id": 0,
"author": "string",
"text": "string",
"pub_date": "2019-08-24T14:15:22Z",
"image": "string",
"group": 0
}
Частичное обновление публикации по id. Обновить публикацию может только автор публикации. Анонимные запросы запрещены.
PATCH-запрос:
http://127.0.0.1:8000/api/v1/posts/{id}/
Тело запроса:
{
"text": "string",
"image": "string",
"group": 0
}
Ответ:
{
"id": 0,
"author": "string",
"text": "string",
"pub_date": "2019-08-24T14:15:22Z",
"image": "string",
"group": 0
}
Удаление публикации по id. Удалить публикацию может только автор публикации. Анонимные запросы запрещены.
DELETE-запрос:
http://127.0.0.1:8000/api/v1/posts/{id}/
Получение всех комментариев к публикации.
GET-запрос:
http://127.0.0.1:8000/api/v1/posts/{post_id}/comments/
Ответ:
[
{
"id": 0,
"author": "string",
"text": "string",
"created": "2019-08-24T14:15:22Z",
"post": 0
}
]
Добавление нового комментария к публикации. Анонимные запросы запрещены.
POST-запрос:
http://127.0.0.1:8000/api/v1/posts/{post_id}/comments/
Тело запроса:
{
"text": "string"
}
Ответ:
{
"id": 0,
"author": "string",
"text": "string",
"created": "2019-08-24T14:15:22Z",
"post": 0
}
Получение комментария к публикации по id.
GET-запрос:
http://127.0.0.1:8000/api/v1/posts/{post_id}/comments/{id}/
Ответ:
{
"id": 0,
"author": "string",
"text": "string",
"created": "2019-08-24T14:15:22Z",
"post": 0
}
Обновление комментария к публикации по id. Обновить комментарий может только автор комментария. Анонимные запросы запрещены.
PUT-запрос:
http://127.0.0.1:8000/api/v1/posts/{post_id}/comments/{id}/
Тело запроса:
{
"text": "string"
}
Ответ:
{
"id": 0,
"author": "string",
"text": "string",
"created": "2019-08-24T14:15:22Z",
"post": 0
}
Частичное обновление комментария к публикации по id. Обновить комментарий может только автор комментария. Анонимные запросы запрещены.
PATCH-запрос:
http://127.0.0.1:8000/api/v1/posts/{post_id}/comments/{id}/
Тело запроса:
{
"text": "string"
}
Ответ:
{
"id": 0,
"author": "string",
"text": "string",
"created": "2019-08-24T14:15:22Z",
"post": 0
}
Удаление комментария к публикации по id. Обновить комментарий может только автор комментария. Анонимные запросы запрещены.
DELETE-запрос:
http://127.0.0.1:8000/api/v1/posts/{post_id}/comments/{id}/
Получение списка доступных сообществ.
GET-запрос:
http://127.0.0.1:8000/api/v1/groups/
Ответ:
[
{
"id": 0,
"title": "string",
"slug": "string",
"description": "string"
}
]
Получение информации о сообществе по id.
GET-запрос:
http://127.0.0.1:8000/api/v1/groups/{id}/
Ответ:
{
"id": 0,
"title": "string",
"slug": "string",
"description": "string"
}
Возвращает все подписки пользователя, сделавшего запрос. Анонимные запросы запрещены.
POST-запрос:
http://127.0.0.1:8000/api/v1/follow/
Тело запроса:
{
"following": "string"
}
Ответ:
{
"user": "string",
"following": "string"
}
Получение JWT-токена.
POST-запрос:
http://127.0.0.1:8000/api/v1/jwt/create/
Тело запроса:
{
"username": "string",
"password": "string"
}
Ответ:
{
"refresh": "string",
"access": "string"
}
Обновление JWT-токена.
POST-запрос:
http://127.0.0.1:8000/api/v1/jwt/refresh/
Тело запроса:
{
"refresh": "string"
}
Ответ:
{
"access": "string"
}
Проверка JWT-токена.
POST-запрос:
http://127.0.0.1:8000/api/v1/jwt/verify/
Тело запроса:
{
"token": "string"
}