Skip to content

cikapu-pu/practic6-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

practic6-API

Tattoo Studio API

Бэкенд-приложение на Django REST Framework для автоматизации процессов и управления данными тату-салона.

Архитектура базы данных и модели

На первом этапе была спроектирована и реализована реляционная база данных для тату-студии. Созданы следующие ключевые модели:

  • Master (Мастера) — хранит информацию о татуировщиках: имя, опыт работы и их почасовую ставку.
  • Style (Стили) — каталог стилей татуировок с названиями и описаниями.
  • Sketch (Эскизы) — каталог доступных тату-эскизов. Каждый эскиз связан с мастером, который его выполнил, и конкретным стилем. Также добавлен статус доступности.
  • Client (Клиенты) — база данных клиентов студии с именами и номерами телефонов.
  • Session (Сеансы записи) — связующая модель для записи на сеанс. Она объединяет в себе клиента, мастера, выбранный эскиз (может быть не заполнен), дату, время и статус текущего сеанса.

Разработка REST API эндпоинтов

На втором этапе реализован полный набор CRUD-операций с использованием Django REST Framework. Настроены следующие типы эндпоинтов для всех ресурсов:

  • GET (один ресурс) — детальное получение информации об объекте по его ID. Для снижения нагрузки на базу данных и оптимизации вложенных связей внедрено кэширование ответов на 15 минут и оптимизация SQL-запросов.
  • GET (группа ресурсов) — получение списков с поддержкой фильтрации через query-параметры (поиск мастера по имени, отбор эскизов по названию, фильтрация сеансов по ID мастера/клиента/эскиза).
  • POST — создание нового ресурса. Метод переопределен для поддержки массового создания: API принимает как один JSON-объект, так и массив из нескольких объектов за один запрос.
  • PUT / PATCH — полное и частичное обновление данных. Реализована поддержка как одиночного, так и группового (массового) обновления записей по списку ID.
  • DELETE — удаление данных. Метод настроен так, что можно удалять записи из базы данных как поодиночке (через URL), так и целыми группами сразу через query-параметр ?ids=1,2,3 (массовое удаление).

Безопасность и документация

На финальном этапе реализованы механизмы разграничения прав доступа и интерактивная документация:

  • Аутентификация: Доступ к закрытым эндпоинтам защищен с помощью JWT-токенов. Реализованы эндпоинты для получения и обновления пары токенов (access/refresh).
  • Ограничение прав (Permissions): Настроены кастомные правила доступа для каталога эскизов. Чтение списка эскизов доступно всем пользователям, включая неавторизованных гостей. Создание, редактирование и удаление разрешено только аутентифицированным мастерам.
  • Интерактивная документация: Для удобства интеграции с фронтендом и тестирования API подключен Swagger UI. Инструмент автоматически сканирует код проекта и генерирует интерактивную веб-страницу.

Страница документации доступна в браузере по адресу: http://127.0.0.1:8000/api/schema/swagger-ui/

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages