Skip to content

aVeter77/yatube_api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API: Yatube Cоциальная сеть

example workflow

Социальная сеть с возможность создать учетную запись, публиковать записи, подписываться на любимых авторов, комментировать и отмечать понравившиеся записи.

Полное описание API http://api.yatube.aveter77.site/redoc/

Эндпоинты http://api.yatube.aveter77.site/api/v1/

Образ на Dockerhub

Алгоритм получения токена

Пользователь отправляет POST-запрос на эндпоинт /api/v1/jwt/create/ с параметрами

{
  "username": "string",
  "password": "string"
}

В ответе на запрос приходит:

  • refresh для обновления токена. Для этого отправьте POST-запрос на /auth/jwt/create/, в теле запроса в поле refresh передайте refresh-токен;
  • access токен, который надо будет передавать в заголовке каждого запроса, в поле Authorization. Перед самим токеном должно стоять ключевое слово Bearer и пробел.

Технологии

Запуск

Установите переменные среды, как в .env.example.

Docker

cd infra/
docker-compose up -d

После запуска выполните команды:

docker-compose exec web python manage.py migrate
docker-compose exec web python manage.py createsuperuser
docker-compose exec web python manage.py collectstatic --no-input 

Заполнение базы начальными данными

cd infra/
cat fixtures.json | docker-compose exec -T web python manage.py loaddata --format=json -

Примеры запросов:

Получение всех публикаций

[GET] /api/v1/posts/
{
    "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] /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
}

Получение комментариев

[GET] /api/v1/posts/{post_id}/comments/
[
  {
    "id": 0,
    "author": "string",
    "text": "string",
    "created": "2019-08-24T14:15:22Z",
    "post": 0
  }
]

Добавление комментария

[POST] /api/v1/posts/{post_id}/comments/
{
  "text": "string"
}
{
  "id": 0,
  "author": "string",
  "text": "string",
  "created": "2019-08-24T14:15:22Z",
  "post": 0
}

Автор

Александр Николаев

Лицензия

MIT