Skip to content

fAtsteD/library_api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

REST API для библиотеки

Как запустить

Входная точка для сервера: /web/index.php

В файле config.php указаны настройки для бд, под них сделан initial_db.sql. Если нужно чистый проект, нужно указать здесь настройки и создать таблицы, такие как в initial_db.sql.

В initial_db.sql создается все нужные настройки бд:

  • база данных library
  • пользователь api_library со всеми правами только для бд library
  • таблицы
  • тестовые данные

API

/api/book - uri для доступа к API книг

/api/author - uri для доступа к API книг

/api/edition - uri для доступа к API книг

Действия в каждом api:

  • view
  • create
  • update
  • delete

Структура приложения

Запрос приходит в соответствующий контроллер, где обрабатывается действием.

Для каждой таблицы в бд существует модель с её свойствами.

Для управления данными в каждой модели есть отдельные контроллеры с действиями.

База данных

В приложении создается только одно соединение с бд. Оно же используется всеми моделями.

Сущности базы данных

book:

  • id - int, primary key
  • name - char(255), unique
  • edition_id - int

author:

  • id - int, primary key
  • name - char(255), unique

edition:

  • id - int, primary key
  • name - char(255), unique

book_author:

  • book_id - int
  • author_id - int

Связи:

  • book -(many to many)-> author
  • book -(many to one)-> edition

Пагинация (не делал)

Для реализации пагинации добавить построитель запросов. Тогда в контроллере складываем запрос к бд, затем отдаем в объект пагинации. Объект пагинации добавит к запросу offer и limit. После чего вернёт контроллеру для выполнения.

Для определения нужна ли пагинация, можно смотреть на запрос, в который добавить значения номера страницы и количество объектов на странице.

Авторизация

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

При запуске приложения (класс App) должно проверяться нахождение токена, и в случае его наличия, выполняться получение сущности пользователя и сохранение её в статическую переменную приложения. Для нахождения пользователя и выторизвции отдельный класс Authentication. Далее в любой точке приложения можно получить доступ к сущности, а соответственно к тем или иным данным пользователя.

Отдельно должен быть метод проверки авторизован ли пользователь (в более продвинутом варианте имеет ли доступ к тем или иным действия). Подобный метод может вызываться в контроллере для дополнения данных ответа соответствующими полями. В даном сллучае, он вызывается в методе формирования ответа для дополнения его полем user с значением username авторизованого пользователя. Всё это в случае передачи в запросе соответствующих данных.

Не сделано (не знаю нужно ли было избегать/делать это)

Если издание или автор были добавлены к объекту книги, а потом удалены, то при сохранении книги, в книге они останутся.

Класс построения запросов к бд и отдельные унаследованные методы для запросов. Через него же можно было реализовать дополнения, типа пагинации.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages