Проект Yatube - социальная сеть для публикации личных дневников.
Api к социальной сети Yatube, позволяющее:
- Не авторизированным пользователям:
- Просматривать список и детальную информацию постов
- Просматривать комментарии к постам
- Просматривать список и детальную информацию групп
- Регистрация пользователя
- Авторизированным пользователям:
- Все возможности не авторизированного пользователя*
- Добавлять, редактировать, удалять и изменять только свои посты
- Добавлять, редактировать, удалять и изменять только свои комментарии к постам
- Добавлять новые подписки на пользователей или просматривать их
- Создавать JWT токен и обновлять его в случае утраты или компрометации
- ℹ️Получение публикаций
GET
- ℹ️Создание публикации
POST
- ℹ️Получение публикации
GET
- ℹ️Обновление публикации
PUT
- ℹ️Частичное обновление публикации
PATCH
- ℹ️Удаление публикации
DELETE
- ℹ️Получение комментариев
GET
- ℹ️Добавление комментария
POST
- Получение комментария
GET
- Обновление комментария
PUT
- Частичное обновление комментария
PATCH
- Удаление комментария
DELETE
- Список сообществ
GET
- Информация о сообществе
GET
- Подписки
GET
- Подписка
POST
- Получить JWT-токен
POST
- Обновить JWT-токен
POST
- Проверить JWT-токен
POST
Получить список всех публикаций. При указании параметров limit и offset выдача должна работать с пагинацией.
http://127.0.0.1:8000/api/v1/posts/ GET
- limit: integer -- Количество публикаций на страницу
- offset: integer -- Номер страницы после которой начинать выдачу
- 200 Удачное выполнение запроса без пагинации
Status code 200
{
"count": 123,
"next": "http://127.0.0.1:8000/api/v1/posts/?offset=400&limit=100",
"previous": "http://127.0.0.1:8000/api/v1/posts/?offset=200&limit=100",
"results": [
{
"id": 0,
"author": "string",
"text": "string",
"pub_date": "2021-10-14T20:41:29.648Z",
"image": "string",
"group": 0
}
]
}
Добавление новой публикации в коллекцию публикаций. Анонимные запросы запрещены.
http://127.0.0.1:8000/api/v1/posts/ POST
{
"text": "string",
"image": "string",
"group": 0
}
- 201 Удачное выполнение запроса
- 400 Отсутствует обязательное поле в теле запроса
- 401 Запрос от имени анонимного пользователя
Status code 201
{
"id": 0,
"author": "string",
"text": "string",
"pub_date": "2019-08-24T14:15:22Z",
"image": "string",
"group": 0
}
Status code 400
{
"text": [
"Обязательное поле."
]
}
Status code 401
{
"detail": "Учетные данные не были предоставлены."
}
Получение публикации по id.
http://127.0.0.1:8000/api/v1/posts/{id}/ GET
- id: integer -- id публикации
- 200 Удачное выполнение запроса
- 404 Попытка запроса несуществующей публикации
Status code 201
{
"id": 0,
"author": "string",
"text": "string",
"pub_date": "2019-08-24T14:15:22Z",
"image": "string",
"group": 0
}
Status code 404
{
"detail": "Страница не найдена."
}
Обновление публикации по id. Обновить публикацию может только автор публикации. Анонимные запросы запрещены.
http://127.0.0.1:8000/api/v1/posts/{id}/ PUT
- id: integer -- id публикации
{
"text": "string",
"image": "string",
"group": 0
}
- 200 Удачное выполнение запроса
- 400 Отсутствует обязательное поле в теле запроса
- 401 Запрос от имени анонимного пользователя
- 403 Попытка изменения чужого контента
- 404 Попытка изменения несуществующей публикации
Status code 200
{
"id": 0,
"author": "string",
"text": "string",
"pub_date": "2019-08-24T14:15:22Z",
"image": "string",
"group": 0
}
Status code 400
{
"text": [
"Обязательное поле."
]
}
Status code 401
{
"detail": "Учетные данные не были предоставлены."
}
Status code 403
{
"detail": "У вас недостаточно прав для выполнения данного действия."
}
Status code 404
{
"detail": "Страница не найдена."
}
Частичное обновление публикации по id. Обновить публикацию может только автор публикации. Анонимные запросы запрещены.
http://127.0.0.1:8000/api/v1/posts/{id}/ PATCH
- id: integer -- id публикации
{
"text": "string",
"image": "string",
"group": 0
}
- 200 Удачное выполнение запроса
- 401 Запрос от имени анонимного пользователя
- 403 Попытка изменения чужого контента
- 404 Попытка изменения несуществующей публикации
Status code 200
{
"id": 0,
"author": "string",
"text": "string",
"pub_date": "2019-08-24T14:15:22Z",
"image": "string",
"group": 0
}
Status code 401
{
"detail": "Учетные данные не были предоставлены."
}
Status code 403
{
"detail": "У вас недостаточно прав для выполнения данного действия."
}
Status code 404
{
"detail": "Страница не найдена."
}
Удаление публикации по id. Удалить публикацию может только автор публикации. Анонимные запросы запрещены.
http://127.0.0.1:8000/api/v1/posts/{id}/ DELETE
- id: integer -- id публикации
- 204 Удачное выполнение запроса
- 401 Запрос от имени анонимного пользователя
- 403 Попытка изменения чужого контента
- 404 Попытка удаления несуществующей публикации
Status code 401
{
"detail": "Учетные данные не были предоставлены."
}
Status code 403
{
"detail": "У вас недостаточно прав для выполнения данного действия."
}
Status code 404
{
"detail": "Страница не найдена."
}
Получение всех комментариев к публикации.
http://127.0.0.1:8000/api/v1/posts/{post_id}/comments/ GET
- id: integer -- id публикации
- 200 Удачное выполнение запроса
- 404 Получение списка комментариев к несуществующей публикации
Status code 200
[
{
"id": 0,
"author": "string",
"text": "string",
"created": "2019-08-24T14:15:22Z",
"post": 0
}
]
Status code 404
{
"detail": "Страница не найдена."
}
Добавление нового комментария к публикации. Анонимные запросы запрещены.
http://127.0.0.1:8000/api/v1/posts/{post_id}/comments/ POST
- id: integer -- id публикации
{
"text": "string"
}
- 201 Удачное выполнение запроса
- 400 Отсутствует обязательное поле в теле запроса
- 401 Запрос от имени анонимного пользователя
- 404 Попытка добавить комментарий к несуществующей публикации
Status code 200
{
"id": 0,
"author": "string",
"text": "string",
"created": "2019-08-24T14:15:22Z",
"post": 0
}
Status code 400
{
"text": [
"Обязательное поле."
]
}
Status code 401
{
"detail": "Учетные данные не были предоставлены."
}
Status code 404
{
"detail": "Страница не найдена."
}
Создать fork репозитория, клонировать на компьютер и перейти в него в командной строке:
https://github.com/MrGorkiy/api_final_yatube.git
git clone https://github.com/YOU_NAME/api_final_yatube.git
cd api_final_yatube
Cоздать и активировать виртуальное окружение:
python -m venv env
source env/bin/activate
python -m pip install --upgrade pip
Установить зависимости из файла requirements.txt:
pip install -r requirements.txt
Выполнить миграции:
python manage.py migrate
Запустить проект:
python manage.py runserver
Автор: MrGorkiy