Метод авторизации
Метод | Описание | Параметры | Пример |
---|---|---|---|
GetUserId(GET) | Возвращает UserId пользователя в текстовом виде, либо ошибку 401 при неправильном логине\пароле. Для обращения к методу следует использовать платформенный WebRequest, задав ему имя и пароль. Также в WebRequest теперь автоматически проставляется хедер Authorization с Basic авторизацией, если был задан логин и пароль. | UserName (String) Password (String) | public static void StartAuthorization(string userName, string password, AuthScreen screen) { _webRequest.UserName = userName; _webRequest.Password = password; _screen = screen; _webRequest.Get(Settings.AuthUrl, Callback); } |
Логика синхронизации
При инициализации базы MSSQL по метаданным в каждую таблицу добавляются служебные поля IsDeleted и Timestamp. IsDeleted - поле boolean типа, флаг удаленной записи. Timestamp - поле типа bigint, содержащее в себе время последней модификации записи.
Протокол и точки подключения
- Обмен данными осуществляется посредством передачи сжатых в zip json документов POST запросом по протоколу HTTP
- Конечная точка имеет вид http(s)://%адрес сервера GROTEM %/%имя решения%/device/DefaultScope/DownloadChanges, номер порта зависит от конфигурации web сервера IIS (по умолчанию 80 для http и 443 для https), например:
http://server.ru/grotem/device/DefaultScope/DownloadChanges - Используется "Basic" авторизация, имя пользователя и пароль зависят от решения
- В запросе должны быть проставлены следующие хедеры:
"configname" - имя конфигурации из метаданных, например "Service"
"configversion" - версия конфигурации из метаданных, например "1.3.1.327"
"coreversion" - (ОПЦИОНАЛЬНО) версия клиента, например "3.0.0.0" - Кодировка - UTF-8
Структура json документа
- Id - guid
- TimestampFrom - время последней синхронизации клиента с сервером
- TimestampTo - новое время последней синхронизации клиента с сервером. Оно должно быть использовано в качестве значения TimestampFrom при следующей синхронизации
- DeletedEntities - массив удалённых записей в формате json
- ChangedEntities - массив изменённых записей в формате json
- FiltersToApply - список фильтров для удаления неактуальных данных на клиенте
{"Id":"2aedcc06-3d1b-4b29-b5af-d5bacf8326c7","TimestampFrom":0,"TimestampTo":636062561934757950,"DeletedEntities":[],"ChangedEntities":[],"FiltersToApply":[]}
Структура json объекта отдельной записи
- Tablename - имя таблицы
- Fields - json объект с полями записи
Порядок синхронизации
- Клиент отправляет свой документ с данными и заполненным полем TimestampFrom, в нем передается время последней успешной синхронизации с сервером.. Если это поле = 0, то синхронизация считается начальной и клиент получит полный набор данных с сервера.
- Сервер получает документ с данными, заполняет в нём поле TimestampTo текущей датой и выполняет обновление записей или помечает их как удаленные. Всем затронутым записям присваивается одно и то же значение Timestamp = TimestampTo
- Сервер получает список записей в таблицах, изменённых после TimestampFrom, и возвращает клиенту JSON документ с данными. В этом документе значение TimestampTo является датой последней успешной синхронизации и должно быть запомнено клиентом.