Разработка Web-приложения с использованием AJAX + REST
Могу поделиться своим опытом в этом плане, возможно это окажется вам полезно. Мы делали REST API для мобильных клентов (iOS, Android) и допустили ужасную ошибку, сделав в первой версии приложения с API, изначально предназначенным для AJAX. Как оказалось, особенность внешних клиентов заключается в том, что мы не имеем над ними никакого контроля: однажды запущенное приложение будет посылать такие и только такие запросы, которые в него заложены, а с размножением версий ситуация только осложняется. Поэтому API вынуждено оставаться совместимым, что оказалось очень нежелательно и некрасиво при внесении изменений в логику и структуру сервиса. Дальше — хуже. Поскольку вызовы API были сделаны «гибкими», по принципу «мало команд — больше настроек», во многие заранее на стороне клиента передавались параметры выдачи (фильтры, количество элементов на странице и т.д.). После деплоя приложений этими параметрами стало невозможно управлять. Сейчас, в новой версии, эти ошибки учтены с помощью дополнительной прослойки, реализующей принцип «много команд, минимум настроек»: для каждой версии API (отдельно для сайта и версий внешних клиентов) существуют разные обёртки, с подстановкой заранее подготовленных фильтров, проверок и формата выдачи. Это позволяет контролировать менять логику поведения внешних клиентов на сервере, огранизовать серсионность и совместимость.
Stdit, все равно про настройки не понял. На клиенте (клиенте вообще, а не обязательно мобильном) я знаю два распространенных варианта: 1) хардкодинг параметров в код клиента, соответственно изменить настройки можно только изменил код; 2) настройки клиента записаны в файл или базу откуда берутся при запуске приложения. Так что мешаешь хранить много настроек по варианту 2? Апдейт кода уже не требуется. Кроме того настройки можно вообще хранить в удаленной базе, по сути на сервере. Поэтому без конкретного примера не понятно, почему нужно стремится к минимизации количества настроек и увеличение количества команд. Даже более. Что понимаем под «настройка», а что есть «команда» в контексте REST?