Лучшие практики Rails API для обработки потоков мастера, когда клиент является нативным мобильным приложением?
Существует множество руководств / гемов, которые помогают разработчикам Rails создавать сложные потоки веб-форм через HTML (например, wicked). Тем не менее, они часто делают это, тесно связывая рендеринг представлений HTML с самим приложением Rails - подход, который неосуществим для приложения Rails API, так как бэкэнд может только отправлять и получать JSON и не может управлять представлениями клиент.
Это представляет дилемму для клиентов API iOS и Android, использующих мой API, поскольку большая часть их логики ветвления мастера зависит от данных базы данных бэкэнда.
Вопрос: Каковы лучшие практики Rails API при построении сложных потоков мастера для нескольких клиентов?
Например, являются ли объекты форм все еще хорошей идеей для приложения только на Rails API? Являются ли конечные автоматы ключом эвристического для простоты? Или веб-компоненты? Или же мой Rails API просто уйдет с пути - сосредоточиться на предоставлении базовых конечных точек REST - и позволить моим клиентам iOS и Android самостоятельно определять, как проверять пользователей и перемещаться по ним с помощью сложных мастеров?!
Помощь высоко ценится.
1 ответ
В большинстве случаев вы хотели бы, чтобы ваш сервер Rails (или фактически любой сервер) просто действовал как служба REST API, и чтобы клиентский код (либо одностраничное приложение, либо приложение iOS/Android) принимал забота о навигационных потоках и макете.
В редких случаях, когда вы хотите, чтобы сервер выполнял вызов, когда должна происходить навигация, я бы предложил вам передать параметр to
в вашем ответе JSON, с каким-то указанием, либо фрагментом, либо маршрутом, который сообщает вашему клиенту, куда отправить пользователя дальше. Это не очень хорошее решение, потому что код на стороне клиента, как правило, должен быть отделен от кода на стороне сервера, и при таком подходе вам придется управлять своими маршрутами как на клиенте, так и на сервере, но он будет делать то, что вы хотите возможно.