API разработан для проекта Yatube на Django REST framework. API позволяет аутентифицированным пользователям управлять своим контентом. Анонимный пользователь есть доступ только на чтение ограниченной информации.
Клонировать репозиторий и перейти в него в командной строке:
git clone git@github.com:vasilekx/api_final_yatube.gitcd api_final_yatubeCоздать и активировать виртуальное окружение:
python3 -m venv envsource env/bin/activateУстановить зависимости из файла requirements.txt:
python3 -m pip install --upgrade pippip install -r requirements.txtВыполнить миграции:
python3 manage.py migrateЗапустить проект:
python3 manage.py runserverhttp://127.0.0.1:8000/redoc/
Получить список всех публикаций. При указании параметров limit и offset выдача должна работать с пагинацией.
GET-запрос:
http://127.0.0.1:8000/api/v1/posts/?limit=2&offset=4
Ответ:
{
"count": 10,
"next": "http://127.0.0.1:8000/api/v1/posts/?limit=2&offset=6",
"previous": "http://127.0.0.1:8000/api/v1/posts/?limit=2&offset=2",
"results": [
{
"id": 6,
"author": "user_a",
"text": "post 6",
"image": null,
"pub_date": "2022-03-18T12:06:06.748759Z",
"group": 1
},
{
"id": 5,
"author": "user_a",
"text": "post 5",
"image": null,
"pub_date": "2022-03-18T12:06:04.428759Z",
"group": 1
}
]
}Получение публикации по 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
}Добавление новой публикации в коллекцию публикаций. Анонимные запросы запрещены.
POST-запрос:
http://127.0.0.1:8000/api/v1/posts/
Тело запроса:
{
"text": "string",
"image": "string",
"group": 0
}Ответ:
{
"text": "string",
"image": "string",
"group": 0
}Получение всех комментариев к публикации.
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
}
]Обновление комментария к публикации по id. Обновить комментарий может только автор комментария. Анонимные запросы запрещены.
PUT-запрос:
http://127.0.0.1:8000/api/v1/posts/{post_id}/comments/{id}/
Ответ:
{
"text": "string"
}Удаление комментария к публикации по id. Обновить комментарий может только автор комментария. Анонимные запросы запрещены.
DEL-запрос:
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"
}Возвращает все подписки пользователя, сделавшего запрос. Анонимные запросы запрещены.
GET-запрос:
http://127.0.0.1:8000/api/v1/follow/
Ответ:
{
"id": 0,
"title": "string",
"slug": "string",
"description": "string"
}Получение JWT-токена.
POST-запрос:
http://127.0.0.1:8000/api/v1/jwt/create/
Тело запроса:
{
"username": "string",
"password": "string"
}Ответ:
{
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTY0Nzc2ODQyNSwianRpIjoiMWIyZjQ3OWJiOTliNGY3MGI3N2E1MGU4YjcyNTVlZmIiLCJ1c2VyX2lkIjoyfQ.64EYjgfKYokAafeFWEJxSt09YJ9KTe4xK66rDuitT5o",
"access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjQ3NzY4NDI1LCJqdGkiOiJlN2JjZjliMGU4N2Y0OTIyOTRkNjZmMDlmYjQ2ZmYzNyIsInVzZXJfaWQiOjJ9.zYPO8-MJfH71B-VdTQWSCeWWy7agnGhj2OK8uDZDPSk"
}