====== Обзор веб-API UniServer AUTO ====== ===== Введение ===== Веб-приложение UniServer AUTO это автономный веб-сервер с модульной архитектурой. Каждый модуль-плагин системы (журнал, камера, УДВВ, весовой индикатор, считыватель меток и т.п.) имеет свой набор функции и параметров. Для доступа к параметрам и функциям установленных в UniServer AUTO модулей-плагинов существует веб-API, основанный на HTTP POST/GET-запросах. Веб-API позволяет разработчикам сторонних систем интегрировать ПО UniServer AUTO в единую программную экосистему предприятия. Методы веб-API UniServer AUTO можно использовать для взаимодействия с любым плагином системы. Список доступных функций веб-API основных плагинов UniServer AUTO представлен **[[webapi:uniserver_auto:api_table|здесь]]**. Различные методы веб-API UniServer AUTO возвращают ответ либо в формате JSON, либо строку в формате text/plain. Точный формат ответа представлен в описании к конкретному методу. Список кодов состояния HTTP ответов **[[webapi:uniserver_auto:http_state_codes|здесь]]**. Для доступа к API существует формат HTTP-запросов с набором обязательных и необязательных параметров. Доступ к методам API производится двумя способами: - Через опубликованный список команд на сервере; - Напрямую к плагинам (модулям) системы. ===== Способ 1. Формат запроса к опубликованным методам плагина===== Данный способ представляет собой механизм взаимодействия через ядро сервера UniServer AUTO с плагинами приложения с помощью методов, опубликованных в настройках **Core.CommandMap**. Такой механизм удобен при большом количестве клиентов, так как снижает нагрузку на WEB интерфейс плагина, все команды поступают в ядро сервера и выполняются в основном обработчике каждого плагина в порядке очереди. Обработчик команд WEB интерфейса плагина при этом не используется. Имеется возможность не публиковать команду или изменить наименование команды, что повышает степень защищенности системы. Если происходит обращение к неопубликованной команде, система вернет ошибку с кодом состояния **500**. Формат запроса к опубликованным методам плагина: http://<адрес сервера>:<порт>/core/SendMsg?Name=<наименование метода>&Value=<набор параметров в формате JSON> Пример запроса к опубликованному методу плагина Весовой индикатор - WeightIndicator1_GetMassa: \\ **[[http://uniserver.vesysoft.ru:8123/core/SendMsg?Name=WeightIndicator1_GetMassa&auth_user=user&auth_password=user|http://uniserver.vesysoft.ru:8123/core/SendMsg?Name=WeightIndicator1_GetMassa&auth_user=user&auth_password=user]]** \\ \\ Пример запроса к опубликованному методу плагина Камера - Camera1_GetFrameJpg: \\ **[[http://uniserver.vesysoft.ru:8123/core/SendMsg?Name=Camera1_GetFrameJpg&Value={"w":800,"h":600}&auth_user=user&auth_password=user|http://uniserver.vesysoft.ru:8123/core/SendMsg?Name=Camera1_GetFrameJpg&Value={"w":800,"h":600}&auth_user=user&auth_password=user]]** \\ \\ В данном примере выполняется запрос на получение текущей картинки с камеры плагина Camera1 в формате JPG: * Camera1_GetFrameJpg- опубликованный метод ядра системы для получения картинки с камеры плагина Camera1 в формате JPG. * {"w":800,"h":600} - набор дополнительных параметров в формате JSON, сообщающих системе, размер запрашиваемого изображения. По умолчанию при установке системы список опубликованных команд содержит все имеющиеся команды плагинов. Отредактировать список опубликованных команд, их наименования можно через меню **Параметры** -> **Core** -> **Core.CommandMap**. ===== Способ 2. Формат прямого запроса к WEB интерфейсу плагина ===== Данный способ позволяет клиенту обратиться напрямую в обработчик WEB интерфейса плагина. Для каждого клиента создается отдельный обработчик, в котором команды выполняются сразу, без помещения в очередь. Формат запроса к WEB интерфейсу плагина: http://<адрес сервера>:<порт>/core/plugins/<наименование плагина>/<наименование метода>?<параметр_1>=<значение_параметра_1>&<параметр_2>=<значение_параметра_2> &<параметр_n>=<значение_параметра_n> Пример запроса к плагину WeightIndicator1: \\ **[[http://uniserver.vesysoft.ru:8123/core/plugins/WeightIndicator1/Massa?auth_user=user&auth_password=user|http://uniserver.vesysoft.ru:8123/core/plugins/WeightIndicator1/Massa?auth_user=user&auth_password=user]]** \\ В данном примере выполняется запрос на получение значения массы к плагину весового индикатора Weightindicator1, метод Massa. Пример запроса к плагину Camera1: \\ **[[http://uniserver.vesysoft.ru:8123/core/plugins/Camera1/Video?Width=600&Height=400&auth_user=user&auth_password=user|http://uniserver.vesysoft.ru:8123/core/plugins/Camera1/Video?Width=600&Height=400&auth_user=user&auth_password=user]]** В данном примере выполняется запрос к плагину камеры Camera1 на получение текущей картинки формате JPG, набор параметров включает в себя 2 параметра: * Width - высота запрашиваемого изображения. * Height - ширина запрашиваемого изображения. ===== Авторизация ===== В случае, если запрос выполняется от неавторизованного клиента, к запросу необходимо добавить два параметра: **auth_user** (имя пользователя) и **auth_password** (пароль пользователя). ===== Список веб-API основных плагинов ===== {{section>webapi:uniserver_auto:api_table&noheader}}