Skip to content

Проект представляет собой REST API, который позволяет получать доступ к постам, комментариям, группам и подпискам блога в зависимости от статуса пользователя

Notifications You must be signed in to change notification settings

sanfootball/api_final_yatube

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API для Yatube

Описание.

Проект "API для Yatube" представляет собой REST API, который позволяет получать доступ к постам, комментариям, группам и подпискам блога Yatube в зависимости от статуса пользователя. В проекте реализованы пермишены, фильтрации, сортировки и поиск по запросам клиентов, реализована пагинация ответов от API, установлено ограничение количества запросов к API. Данный проект решает задачу предоставления удобного взаимодействия с блогом Yatube через API.

Как использовать

  • Это приложение простое в использовании.
  • Для аутентификации используются JWT-токены.
  • Информация доступна как для незарегистрированных пользователей (доступ к API только на чтение), так и для зарегистрированных.
  • Исключение — эндпоинт /follow/: доступ к нему возможен только аутентифицированным пользователям.
  • Аутентифицированным пользователям разрешено изменение и удаление своего контента; в остальных случаях доступ предоставляется только для чтения.

Процесс разработки

В процессе разработки возникли некоторые сложности, которые были успешно преодолены. Одной из таких сложностей было определение прав доступа к API в зависимости от статуса пользователя. Для решения данной задачи была реализована аутентификация по JWT-токену.

Также было решено использовать Django REST framework для создания API, что позволило ускорить процесс разработки и сделать API более гибким и удобным в использовании. В целом, процесс разработки прошел успешно, и был получен удобный и надежный API для взаимодействия с блогом Yatube.

Для установки и запуска проекта необходимо выполнить шаги, перечисленные в разделе "Установка и запуск проекта" файла README.md.

Установка и запуск проекта

Для установки и запуска проекта необходимо выполнить следующие шаги:

  1. Склонировать репозиторий:
git clone https://github.com/sanfootball/api_final_yatube
  1. Перейти в директорию с проектом:
cd api_final_yatube
  1. Создать виртуальное окружение и активировать его:
python -m venv venv
source venv/Scripts/activate
  1. Установить зависимости:
pip install -r requirements.txt
  1. Применить миграции:
python manage.py migrate
  1. Запустить сервер:
python manage.py runserver

Примеры работы с API

API Yatube возвращает ответы в формате JSON.

GET-запрос на получение списка публикаций или публикации по id:

http://127.0.0.1:8000/api/v1/posts/

http://127.0.0.1:8000/api/v1/posts/{id}/

Ответ:

{
  "id": 1,
  "text": "Новый пост",
  "author": "admin",
  "group": null,
  "image": null,
  "pub_date": "2022-01-03T10:00:39.364506Z",
  "comments": []
}

GET-запрос на получение списка всех публикаций с указанием параметров limit и offset:

  • limit - какое число объектов вернётся

  • offset - с какого по счёту объекта начнется отсчёт

http://127.0.0.1:8000/api/v1/posts/?limit=2&offset=2

API возвращает список с пагинацией:

Ответ:

{
  "count": 4,
  "next": null,
  "previous": "http://127.0.0.1:8000/api/v1/posts/?limit=2",
  "results": [
    {
      "id": 3,
      "text": "И еще один новый пост",
      "author": "admin",
      "group": null,
      "image": null,
      "pub_date": "2022-01-05T08:44:55.037434Z",
      "comments": []
    },
    {
      "id": 4,
      "text": "Новый пост №4",
      "author": "admin",
      "group": null,
      "image": null,
      "pub_date": "2022-01-05T08:45:19.129408Z",
      "comments": []
    }
  ]
}

Документация API

Документация API доступна по адресу: http://localhost:8000/redoc/

Технологии

  • Python 3.9.10
  • Django 3.2.16
  • Django REST framework 3.12.4
  • JWT + Djoser

Разработчик проекта

Автор: Александр Трубников
E-mail: petrovskii1980@mail.ru
Telegram: https://t.me/sanfootball

About

Проект представляет собой REST API, который позволяет получать доступ к постам, комментариям, группам и подпискам блога в зависимости от статуса пользователя

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published