Введение
Общее описание
Структура приложения
Уроки
Описание библиотеки
Внутренние данные библиотеки
Связывание данных
Экраны
Компоненты
Навигация в DePro
Взаимодействие с сервером
Работа с базой данных
Общая информация
Методы
Пуш уведомления
Общая информация
Работа с пушами в DePro
pushNavigator и обработчики
Взаимодействие с сервером
Анимация в DePro
Диалоги
Дополнительные элементы разметки
Общая информация
Calendar
DateDiapason
DrumPicker
ComponEditText
EditTextMask
Gallery
ComponList
PagerIndicator
SheetBottom
ComponSwitch
ComponTextView
Дополнительный материал
Кастомный функционал
Поддержка нескольких языков
Особенности авторизации
Валидация перед отправкой на сервер
Приложения

Взаимодействие с сервером

В библиотеке декларативного программирования DePro нет операторов вычисления выражений, циклов и прочего, поэтому НА СЕРВЕРЕ ДОЛЖНА ВЫПОЛНЯТЬСЯ ВСЯ БИЗНЕС-ЛОГИКА. Поясним это на простом примере. Пусть на экране нужно отображать такие данные как количество, цена и сумма. Для приложений на Джаве можно было переслать с сервера только количество и цену, а сумму несложно было вычислить в клиентском приложении. Для приложений на DePro нужно пересылать с сервера все три переменные.

От сервера (данные приходят в формате json (см. Официальная домашняя страница формата на русском языке). Данные могут приходить в форме записи - коллекция (множество) неупорядоченных пар ключ/значение заключенная в в фигурные скобки “{ }”, либо в форме массива - упорядоченного множества значений заключенных в квадратные скобки “[ ]”. Эти данные преобразуются во внутренний формат записей (Record) и списка записей (List<Record>) с которыми и работают компоненты.

В формате json нет типа данных дата-время. Дата передается с сервера в виде количества миллисекунд (или секунд) прошедших с 1 января 1970 года. Что конкретно передавать миллисекунды или секунды нужно согласовать с андроид программистом, чтобы он установил нужное значение атрибутов у ComponTextView. Также можно передавать время и уже отформатированом виде в строке.

Допускается передавать с сервера данные в форме:

{“data”:данные в указанных выше формах (запись или массив), “error”:запись с сообщением об ошибке}

Если ошибки нет то можно не передавать пару “error”:запись с сообщением об ошибке. Аналогично если имеется ошибка то “data” не передается.

Более предпочтительным является передача данных в виде записи или массива. А сообщение об ошибке в виде записи.

Сообщения об ошибках с сервера поступают с любым кодом кроме 200. В этом случае сообщение оформляется в виде записи, либо в форме {“error”:запись с сообщением об ошибке}

Структура “запись с сообщением об ошибке” не регламентируется. Эти данные связываются с экраном (или вьюшкой на экране) диалога об ошибке.

Если разработчик приложения решит использовать библиотечный диалог об ошибках, то нужно передавать запись следующего вида: {"title":"Заголовок диалога","message":"Сущность ошибки"}.

Не рекомендуется давать одинаковые названия различным сущностям. Например, если у вас имеются сущности наименование категории и наменование товара, то не следует давать им одинаковое название типа "name". Нужно для каждой сущности дать уникальное назание: "name_category" и "name_product".

Так как полям представления присваиваются значения по совпадению названия поля в записи с названием id элемента разметки, то при отсутствии поля в записи в представлении значение элемента разметки не будет изменено. Поэтому в записи должны быть поля для всех элементов разметки, которые нужно отображать. Если значение отсутствует, то нужно передавать пустое значение (“”, null, 0 и т.д.). Это важно для таких виджетов у которых представления используются для разных наборов данных. Например, RecyclerView.

Некоторые параметры передаются на сервер в заголовке запроса. Это токен авторизации, токен для пушей, локаль, версия приложения, параметры пагинации. Названия этих параметров устанавливаются в классе AppParams и их при необходимости можно изменить.

После успешной авторизации с сервера должна приходить запись следующего вида {"token":"xxxxxxxxxx ... xxxxx","profile":{ ... }}/ Названия ключей "token" и "profile" могут быть другими, но нужно согласовать с анлроид программистом.

Обработка пушей на сервере описана в разделе "Пуш уведомления".



Лучше пакета DePro может быть только искусственный интеллект
Задать вопрос
Отправить вопрос