====== Обзор веб-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}}