Skip to content

cikapu-pu/practic6-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

practic6-API

Tattoo Studio API

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

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

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

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

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

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

  • GET (один ресурс) — детальное получение информации об объекте по его ID. Чтобы оптимизировать нагрузку на базу данных, я дополнительно внедрила кэширование ответов на 15 минут.
  • GET (группа ресурсов) — получение списков с поддержкой фильтрации через query-параметры (например, реализовала поиск мастера по имени или отбор сеансов по ID мастера/клиента).
  • POST — создание нового ресурса. Этот метод я переопределила для поддержки массового создания: теперь моё API умеет принимать как один JSON-объект, так и массив из нескольких объектов (группу ресурсов) за один запрос.
  • PATCH — частичное обновление данных. Я добавила поддержку как одиночного, так и группового обновления записей по списку ID.
  • DELETE — удаление данных. Я настроила этот метод так, что можно удалять записи из базы данных как поодиночке, так и целыми группами сразу (массовое удаление).

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

На последнем этапе я защитила проект и сделала документацию:

  • Защита проекта: Я сделала так, чтобы в систему нельзя было зайти без специального электронного ключа (токена). Для этого я добавила эндпоинты, которые выдают этот ключ при вводе логина и пароля, и проверяют его при каждом действии.
  • Ограничение прав: Я настроила правила для каталога эскизов. Смотреть эскизы и предлагать новые могут абсолютно все (даже неавторизованные гости). А вот редактировать или удалять чужие эскизы могут только вошедшие в систему мастера.
  • Интерактивная документация: Чтобы бэкендом было удобно пользоваться, я подключила инструмент Swagger. Он сам сканирует весь мой код и собирает его в красивую веб-страницу.

Эта страница доступна прямо в браузере по адресу: 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