Начало работы

Назначение

REST сервер (DSERVER) предназначенен для организациии взаимодействия с внешними программыми системами и позволяет получать и передавать информацию в систему Диста:ERP.

Обмен информацией происходит с помощью запросов к серверу по HTTP протоколу с приемом/передачей данных в формате JSON. Для обеспечения защиты данных можно включить SSL шифрование трафика.

При работе по HTТP протоколу REST сервер выступает в роли WEB сервиса системы Диста:ERP.

Запросы к серверу

Для обращении к серверу по HTTP протоколу необходимо использовать POST запросы по адресу:
http://<host><:port>/dserver/rest/<набор методов/<метод>

Набор методов - это логическое объединение методов. Например: qnts - набор методов для работы с количеством товаров.
Метод - запрос по обработке данных.

Параметры метода передаются в формате JSON. После вызова метода сервер возвращает ответ также в формате JSON.

Аутентификация

Для вызова методов серверы необходимо выполнить процедуру аутентификации: указать имя и пароль доступа к данным.

Имя пользователя и пароль необходимо установить через параметры запроса:

curl_setopt( $ch , CURLOPT_USERPWD , "username:password" );

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

Сессии

Выполнении метода на сервере происходит в рамках рабочей сессии. Сессия - это кэш подключения к серверу, который ускоряет выполнении запроса. Параметры сессии возвращаются в заголовке ответа в директиве Pragma: id сессии (dsssession) и ее время жизни (dsssessionexpires) в миллисекундах.

При вызовах методов сервера можно вместо передачи имени/пароля передавать id сессии в качестве параметра:

http://<host>/dserver/rest/<набор методов/<метод>/?sessionid=xxx.xxx.xxx

Для удобства получения id сессии можно вызвать метод сервера auth.login. В ответе сервера будут переданы параметры сессии в формате JSON:

{"sessionid":"xxx.xxx.xxx","sessionexpires":xxxxx}

При отсутсвии запросов к серверу в рамках рабочей сессии, она будет автоматически закрыта через dssessionexpires милисекунд. Каждый новый запрос в рамках рабочей сессии будет заново взводить время ее жизни.

Для принудительного закрытия сессии нужно вызвать метод:
http://<host><:port>/dserver/rest/closesession/?sessionid=xxx.xxx.xxx