В этом проекте я создал API-сервис для социальной сети Yatube.
Благодаря API-сервису вы можете при помощи запросов получать информацию:
- Публикации пользователей
- Комментарии публикаций
- Ваши подписки
- Группы
При помощи API-сервиса можно будет связать нашу соц. сеть с приложениями или например с телеграмм-ботом)
Чтобы запустить проект вам нужно склонировать репозиторий и установить в нем все необходиое.
-
Склонируйте репозиторий и перейдите в него:
- Клонирование репозитория:
git clone [email protected]:MirosiakYakipara/api_final_yatube.git
- Перейдите в папку с проектом:
cd api_final_yatube
-
Создайте и активируйте виртуальное окружение:
- Создание виртуального окружения:
python -m venv env
- Активация:
source env/bin/activate
-
Установите зависимости из файла requirements.txt:
- Установка зависимостей:
pip install -r requirements.txt
-
Перейдите в папку где находится manage.py и выполните миграции:
- Переходим в папку с manage.py:
cd yatube_api
- Выполняем миграции:
python manage.py migrate
-
Установка завершена, теперь мы можем запустить наш проект:
- Запускаем проект:
python manage.py runserver
Для того чтобы использовать все возможности сервиса вам нужно получить токен, для работы с токеном у нас есть несколько ссылок:
- Получить токен можно по ссылке, сделав POST- запрос с вашим логином и паролем:
http://127.0.0.1:8000/api/v1/jwt/create/
- Пример POST-запроса:
{
"username": "string",
"password": "string"
}
- Пример ответа:
{
"refresh": "string",
"access": "string"
}
- Обновить токен можно по ссылке, сделав POST- запрос с вашим refresh-токеном:
http://127.0.0.1:8000/api/v1/jwt/refresh/
- Пример POST-запроса:
{
"refresh": "string"
}
- Пример ответа:
{
"access": "string"
}
- Проверить токен можно по ссылке, сделав POST- запрос с вашим токеном:
http://127.0.0.1:8000/api/v1/jwt/verify/
- Пример POST-запроса:
{
"token": "string"
}
- Пример ответа:
{
"detail": "string",
"code": "string"
}
Для получения информации нужно отправлять GET-запросы, их можно отправлять без токена. Но если вы хотите получить подписки, при попытке отправить GET-запрос без токена вы получите ошибку!
Для создания публикации, комментария или подписки на автора вам нужно отправлять POST-запросы и передавать токен.
Для редактирования публикации или комментария вам нужно отправлять PUT-запросы или PATCH-запросы и передавать токен. Редактировать может только автор публикации или комментария!
Для удаления публикации или комментария вам нужно отправлять DELETE-запросы и передавать токен. Удалять публикации или комментарии может только автор!
- 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
}
]
- 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": [
{}
]
}
- 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
}
- 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
}
- 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
}
- 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
}
- DELETE-запрос: Удаление публикации по id. Удалить публикацию может только автор публикации. Анонимные запросы запрещены:
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/
- Пример POST-запроса:
{
"text": "string"
}
- Пример ответа:
{
"id": 0,
"author": "string",
"text": "string",
"created": "2019-08-24T14:15:22Z",
"post": 0
}
- 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
}
- 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
}
- 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
}
- DELETE-запрос: Удаление комментария к публикации по id. Обновить комментарий может только автор комментария. Анонимные запросы запрещены:
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"
}
]
- GET-запрос: Получение информации о сообществе по id:
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/
- Пример ответа:
[
{
"user": "string",
"following": "string"
}
]
- 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