Legend:
У клиента (компания "Todo List") есть свое веб приложение, которое предоставляет услуги по сохранению поставленных перед пользователем задач - todo-list. Задачи возможно добавлять/удалять/изменять/читать. Фронт-енд часть храниться на первом сервере с соответствующим доменным именем - todo.eu. Этот сервер также хранит бек-енд часть, которая передает полученные данные с фронта дальше для манипуляций на второй апи-сервис (api.todo.eu) принадлежащий этой же компании. Сервер todo.eu не записывает данные в БД. Это делает сервер api.todo.eu.
Task:
а) В контексте работ на сервере todo.eu требуется выпонить:
1) Создать REST-связть между фронтом и беком;
2) Настроить сендинг ресурсов на api.todo.eu апи-сервис;
3) обеспечить обработку возможных ошибок при отправке/получении ресурсов;
4) уведомление пользователя об невозможности проведения работ с созданным/редактируемым/удаляемым им ресурсом;
5) логгирование ошибок;
6) настроить получение изменённых ресурсов через "ПРЕДСТАВЛЕНИЕ РЕСУРСА", хранящееся на api.todo.eu;
b) api.todo.eu
Данный сервер должен:
1) Создать условия для получения ресурса
2) Создать условия автоматического выбора метода обработки ресурса
3) Создать условия уведомления об ошибках при записи/изменения ресурса в БД
4) Cоздать для каждого ресурса свое "представление ресурса" без возврата
выполняющегося потока в точку запуска процесса.
5) Создать условия логгирования ошибок и вывод их через "представление ресурса" без возврата
выполняющегося потока в точку запуска процесса.
6) Создать условия передачи измененного/добавленого/удаленного/прочитанного ресурса
без возврата выполняющегося потока в точку запуска процесса.
с) Связь между сервером api.todo.eu и todo.eu должна быть настроена таким образом, что при необходимости изменить/заменить какой-либо из сервисов, второй должен работать без уведомления, что на первый сервис заменен. Связь между двумя серверами должна выстраиваться с акцентом на принцип Client-Stateless-Server (CSS).
Как установить.
-
Для установки нужно клонировать репозиторий и создать условия для загруженных директорий, при которых (по легенде) api.todo.eu - корневая папка апи-сервера, а todo.eu - корневая папка для веб-прложения.
-
Создать БД и внести инфо для коннекта к ней в массив хранящийся в методе "connector()". Адрес: api.todo.eu/DataProviders/Config.php.
-
Внести в созданную БД таблицу todo (хранится в репозитории по имени todo.sql). Если есть небоходимость создать свою таблицу, следует создавать ее структурно идентичной таблице todo.sql. имя можно изменить в константе TABLE_NAME. Адрес: api.todo.eu/DataProviders/Config.php.
-
Настроить сервис так, чтобы обращения по ниже описанным адресам редиректились корректно.
для todo.eu:
1) при обращении на адрес "api/v1/note/" редирект на "/api/v1/entrance.php".
Пример для Apache:
- RewriteRule ^api/v1/note/.* /api/v1/entrance.php [L].
2) при обращении по адресу "todo.eu/" редирект на "todo.eu/web/index.html".
Пример для Apache:
- RewriteCond %{REQUEST_URI} ^/$
- RewriteRule ^(.*)$ /web/index.html [L,QSA]
для api.todo.eu:
1) при обращении на "api.todo.eu" редирект на "api.todo.eu/index.php", но не запретить обращаться
к "api.todo.eu/index.php" напрямую.
В целом, то для настроек редиректов можно воспользоваться как указателями имеющиеся файлы .htaccess, кроме тех файлов .htaccess, в которых код закомментирован
- Если необходимо изменить url для отправки данных, то это возможно сделать изменив возвращаемый массив в методе "uriToSend()". Адрес:
todo.eu/Models/ApiModels/Config/ApiConfig.php.
В таком случае ответственность за дальнейшие ошибки несете Вы.
- Предоставить права на запись/изменение/чтение файла /logs/logs.txt для api.todo.eu и todo.eu (хранится в корне).
В результате вы должны увидеть что-то вроде этого: https://picua.org/image/todo-live-example.aa8qd3