Skip to content

MirosiakYakipara/api_final_yatube

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

О проекте

В этом проекте я создал API-сервис для социальной сети Yatube.

Благодаря API-сервису вы можете при помощи запросов получать информацию:

  • Публикации пользователей
  • Комментарии публикаций
  • Ваши подписки
  • Группы

При помощи API-сервиса можно будет связать нашу соц. сеть с приложениями или например с телеграмм-ботом)

Выполнено при помощи:

Как запустить проект

Чтобы запустить проект вам нужно склонировать репозиторий и установить в нем все необходиое.

Клонирование и установка

  1. Склонируйте репозиторий и перейдите в него:

    • Клонирование репозитория:
    git clone [email protected]:MirosiakYakipara/api_final_yatube.git
    • Перейдите в папку с проектом:
    cd api_final_yatube
  2. Создайте и активируйте виртуальное окружение:

    • Создание виртуального окружения:
    python -m venv env
    • Активация:
    source env/bin/activate
  3. Установите зависимости из файла requirements.txt:

    • Установка зависимостей:
    pip install -r requirements.txt
  4. Перейдите в папку где находится manage.py и выполните миграции:

    • Переходим в папку с manage.py:
    cd yatube_api
    • Выполняем миграции:
    python manage.py migrate
  5. Установка завершена, теперь мы можем запустить наш проект:

    • Запускаем проект:
    python manage.py runserver

Работа с токеном

Для того чтобы использовать все возможности сервиса вам нужно получить токен, для работы с токеном у нас есть несколько ссылок:

  1. Получить токен можно по ссылке, сделав POST- запрос с вашим логином и паролем:
http://127.0.0.1:8000/api/v1/jwt/create/
  • Пример POST-запроса:
{
    "username": "string",
    "password": "string"
}
  • Пример ответа:
{
    "refresh": "string",
    "access": "string"
}
  1. Обновить токен можно по ссылке, сделав POST- запрос с вашим refresh-токеном:
http://127.0.0.1:8000/api/v1/jwt/refresh/
  • Пример POST-запроса:
{
    "refresh": "string"
} 
  • Пример ответа:
{
    "access": "string"
}
  1. Проверить токен можно по ссылке, сделав POST- запрос с вашим токеном:
http://127.0.0.1:8000/api/v1/jwt/verify/
  • Пример POST-запроса:
{
    "token": "string"
}
  • Пример ответа:
{
    "detail": "string",
    "code": "string"
}

Возможности сервиса

Для получения информации нужно отправлять GET-запросы, их можно отправлять без токена. Но если вы хотите получить подписки, при попытке отправить GET-запрос без токена вы получите ошибку!

Для создания публикации, комментария или подписки на автора вам нужно отправлять POST-запросы и передавать токен.

Для редактирования публикации или комментария вам нужно отправлять PUT-запросы или PATCH-запросы и передавать токен. Редактировать может только автор публикации или комментария!

Для удаления публикации или комментария вам нужно отправлять DELETE-запросы и передавать токен. Удалять публикации или комментарии может только автор!

Работа с публикациями

  1. GET-запрос: Получить список всех публикаций:
http://127.0.0.1:8000/api/v1/posts/
  • Пример ответа:
[
    {
        "id": 0,
        "author": "string",
        "text": "string",
        "pub_date": "2019-08-24T14:15:22Z",
        "image": "string",
        "group": 0
    }
]
  1. GET-запрос: Получить список всех публикаций. При указании параметров limit и offset выдача должна работать с пагинацией:
http://127.0.0.1:8000/api/v1/posts/?limit=10&offset=10
  • Пример ответа:
{
    "count": 123,
    "next": "http://api.example.org/accounts/?offset=20&limit=10",
    "previous": "http://api.example.org/accounts/?offset=1&limit=10",
    "results": [
        {}
    ]
}
  1. POST-запрос: Добавление новой публикации в коллекцию публикаций. Анонимные запросы запрещены:
http://127.0.0.1:8000/api/v1/posts/
  • Пример POST-запроса:
{
    "text": "string",
    "image": "string",
    "group": 0
}
  • Пример ответа:
{
    "id": 0,
    "author": "string",
    "text": "string",
    "pub_date": "2019-08-24T14:15:22Z",
    "image": "string",
    "group": 0
}
  1. GET-запрос: Получение публикации по id:
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
}
  1. PUT-запрос: Обновление публикации по id. Обновить публикацию может только автор публикации. Анонимные запросы запрещены:
http://127.0.0.1:8000/api/v1/posts/{id}/
  • Пример PUT-запроса:
{
    "text": "string",
    "image": "string",
    "group": 0
}
  • Пример ответа:
{
    "id": 0,
    "author": "string",
    "text": "string",
    "pub_date": "2019-08-24T14:15:22Z",
    "image": "string",
    "group": 0
}
  1. PATCH-запрос: Частичное обновление публикации по id. Обновить публикацию может только автор публикации. Анонимные запросы запрещены:
http://127.0.0.1:8000/api/v1/posts/{id}/
  • Пример PATCH-запроса:
{
    "text": "string",
    "image": "string",
    "group": 0
}
  • Пример ответа:
{
    "id": 0,
    "author": "string",
    "text": "string",
    "pub_date": "2019-08-24T14:15:22Z",
    "image": "string",
    "group": 0
}
  1. DELETE-запрос: Удаление публикации по id. Удалить публикацию может только автор публикации. Анонимные запросы запрещены:
http://127.0.0.1:8000/api/v1/posts/{id}/
  • Пример ответа:
{}

Работа с комментариями

  1. 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
    }
]
  1. POST-запрос: Добавление нового комментария к публикации. Анонимные запросы запрещены:
http://127.0.0.1:8000/api/v1/posts/{post_id}/comments/
  • Пример POST-запроса:
{   
    "text": "string"
}
  • Пример ответа:
{    
    "id": 0,
    "author": "string",
    "text": "string",
    "created": "2019-08-24T14:15:22Z",
    "post": 0
}
  1. GET-запрос: Получение комментария к публикации по id:
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
}
  1. PUT-запрос: Обновление комментария к публикации по id. Обновить комментарий может только автор комментария. Анонимные запросы запрещены:
http://127.0.0.1:8000/api/v1/posts/{post_id}/comments/{id}/
  • Пример PUT-запроса:
{
    "text": "string"
}
  • Пример ответа:
{
    "id": 0,
    "author": "string",
    "text": "string",
    "created": "2019-08-24T14:15:22Z",
    "post": 0
}
  1. PATCH-запрос: Частичное обновление комментария к публикации по id. Обновить комментарий может только автор комментария. Анонимные запросы запрещены:
http://127.0.0.1:8000/api/v1/posts/{post_id}/comments/{id}/
  • Пример PATCH-запроса:
{
    "text": "string"
}
  • Пример ответа:
{
    "id": 0,
    "author": "string",
    "text": "string",
    "created": "2019-08-24T14:15:22Z",
    "post": 0
}
  1. DELETE-запрос: Удаление комментария к публикации по id. Обновить комментарий может только автор комментария. Анонимные запросы запрещены:
http://127.0.0.1:8000/api/v1/posts/{post_id}/comments/{id}/
  • Пример ответа:
{}

Работа с группами

  1. GET-запрос: Получение списка доступных сообществ:
http://127.0.0.1:8000/api/v1/groups/
  • Пример ответа:
[
    {
        "id": 0,
    "title": "string",
    "slug": "string",
    "description": "string"
    }
]
  1. GET-запрос: Получение информации о сообществе по id:
http://127.0.0.1:8000/api/v1/groups/{id}/
  • Пример ответа:
{
    "id": 0,
    "title": "string",
    "slug": "string",
    "description": "string"
}

Работа с подписками

  1. GET-запрос: Возвращает все подписки пользователя, сделавшего запрос. Анонимные запросы запрещены:
http://127.0.0.1:8000/api/v1/follow/
  • Пример ответа:
[
    {
        "user": "string",
        "following": "string"
    }
]
  1. POST-запрос: Подписка пользователя от имени которого сделан запрос на пользователя переданного в теле запроса. Анонимные запросы запрещены:
http://127.0.0.1:8000/api/v1/follow/
  • Пример POST-запроса:
{   
    "following": "string"
}
  • Пример ответа:
{    
    "user": "string",
    "following": "string"
}

Контакты

Никита Зотов - [email protected]

Ссылка на проект: https://github.com/MirosiakYakipara/api_final_yatube

Releases

No releases published

Packages

No packages published