Разрабатываем систему на backbone.js + slim.php
Они оба поддерживают REST-запросы, используем подход формирования url-запросов для ajax с помощью "/"
GET "/users/45" // вернет из базы юзера
POST "/users/" // создаст нового
Есть достаточно много информации по данным примерам, но все они простые. Как только мы сталкиваемся с реальными проектами (а не todo-шками), получаются проблемы.
Как быть, когда одна и та же сущность (например, user), встречаются внутри многих контейнеров, и при этом в зависимости от того, где мы подключаем сущность user, нам нужны определенные данные.
Вопрос номер 1
Создавать по модели на каждое представление? Например, user в комментарии отличается от user в списке друзей. Еще больше отличается от модели user на странице профиля -- там куда больше информации необходимо отобразить. Получается на каждую сущность по 20 моделей?
Вопрос номер 2
Как нам тогда в рамках /user/id системы подключать и выбирать те или иные данные на связке slim-backbone?
Получается, что на каждую сущность придется создавать уйму моделей, вьюх (ну без последних никуда).
Нормален ли подход такого формата:
- users/45 - получаем полную модель пользователя
- friends/users/45 - получаем обрезанную модель (имя, ссылка, url-картинки)
- reports/7/users - получаем коллекцию пользователей, который сделали отчет №7
- reports/7/users/45 - получаем модель данных пользователя №45, который сделал отчет №7
- reports/7/users/45/files - получаем коллекцию файлов, которые пользователь №45 прикрепил к отчету №7
Или выбрать 2-3 модели для каждой сущности (подробная, краткая версии) и выбирать их?
Что почитать можно по теме для построения архитектуры?
p.s.: после нескольких неудачных подобных заходов к проектированию, и потерянных недель в разработке с мертверожденных проектов появилась какая-то боязнь ошибиться.