Разработка Web-приложения с использованием AJAX + REST

Здравствуйте!

Назрела необходимость глубокого рефакторинга одного довольно сложного web-приложения. Сейчас оно сделано на PHP с использованием парадигмы MVC. Модели толстые, контроллеры тонкие, так что рефакторинг должен пройти относительно легко.

У приложения, помимо прочего, есть JSON REST API, с которым взаимодействуют внешние службы. API пока не покрывает всего функционала, но в дальнейшем планируется набор методов расширять и в идеале наборы функций UI и REST API должны совпадать на 100%, в связи с чем возникла мысль переделать приложение на AJAX, который будет взаимодействовать с этим API, чтобы избежать возможного дублирования.

Я довольно много слышал о таких web-приложениях, и, на мой взгляд, такой подход выглядит очень перспективным.

Хочу попросить помощи у Хабрасообщества — может быть, вы слышали о готовых фреймворках (или компонентах), описаних, common problems, best practices, etc… Если так, поделитесь, пожалуйста, информацией. Буду очень признателен.
  • Вопрос задан
  • 5326 просмотров
Пригласить эксперта
Ответы на вопрос 3
Stdit
@Stdit
Могу поделиться своим опытом в этом плане, возможно это окажется вам полезно. Мы делали REST API для мобильных клентов (iOS, Android) и допустили ужасную ошибку, сделав в первой версии приложения с API, изначально предназначенным для AJAX. Как оказалось, особенность внешних клиентов заключается в том, что мы не имеем над ними никакого контроля: однажды запущенное приложение будет посылать такие и только такие запросы, которые в него заложены, а с размножением версий ситуация только осложняется. Поэтому API вынуждено оставаться совместимым, что оказалось очень нежелательно и некрасиво при внесении изменений в логику и структуру сервиса. Дальше — хуже. Поскольку вызовы API были сделаны «гибкими», по принципу «мало команд — больше настроек», во многие заранее на стороне клиента передавались параметры выдачи (фильтры, количество элементов на странице и т.д.). После деплоя приложений этими параметрами стало невозможно управлять. Сейчас, в новой версии, эти ошибки учтены с помощью дополнительной прослойки, реализующей принцип «много команд, минимум настроек»: для каждой версии API (отдельно для сайта и версий внешних клиентов) существуют разные обёртки, с подстановкой заранее подготовленных фильтров, проверок и формата выдачи. Это позволяет контролировать менять логику поведения внешних клиентов на сервере, огранизовать серсионность и совместимость.
Ответ написан
kuzemchik
@kuzemchik
Restful на PHP это очень грустно. Особенно когда начинаешь его интегрировать с чем либо типа backbone и понимаешь, что приходится писать много странного кода.
Открытый Rest api это обязательно поддержка deprecated функций. И очень большая радость если клиенты перестают пользоваться каким-то из старых вызовов.
Есть еще некоторое отличие ajax api и restful api, недавно была неплохая статья с некоторыми ошибками.
Ответ написан
alekciy
@alekciy
Вёбных дел мастер
Stdit, все равно про настройки не понял. На клиенте (клиенте вообще, а не обязательно мобильном) я знаю два распространенных варианта: 1) хардкодинг параметров в код клиента, соответственно изменить настройки можно только изменил код; 2) настройки клиента записаны в файл или базу откуда берутся при запуске приложения. Так что мешаешь хранить много настроек по варианту 2? Апдейт кода уже не требуется. Кроме того настройки можно вообще хранить в удаленной базе, по сути на сервере. Поэтому без конкретного примера не понятно, почему нужно стремится к минимизации количества настроек и увеличение количества команд. Даже более. Что понимаем под «настройка», а что есть «команда» в контексте REST?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы