документация:описание_протокола_rest_api
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
документация:описание_протокола_rest_api [2024/01/20 04:34] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | документация:описание_протокола_rest_api [2024/01/29 06:57] (текущий) – adm0001 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ===== Описание протокола REST API ===== | ||
+ | |||
+ | ==== Общие настройки ==== | ||
+ | |||
+ | Протокол предназначен для обмена данными с устройствами и сторонними системами сбора данных, | ||
+ | |||
+ | **Подключение к серверу системы мониторинга по протоколу REST API** | ||
+ | |||
+ | Для подключения к серверу системы мониторинга по протоколу REST API используется // | ||
+ | < | ||
+ | http:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | На сервере поддерживается два типа запроса: | ||
+ | |||
+ | * GET-запрос для получения данных из системы мониторинга; | ||
+ | |||
+ | * POST-запрос для записи данных в систему мониторинга. | ||
+ | |||
+ | **Регистрация устройств и сторонних систем сбора данных по протоколу REST API** | ||
+ | |||
+ | Для авторизации необходимо указать API-токен. Токен указан в настройках Пользователя. Для того, чтобы токен работал, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Для запроса данных необходимо использовать GET-запрос с параметром «Authorization» в заголовке запроса. В адресной строке в качестве GET-параметра указать API-токен. Например: | ||
+ | |||
+ | < | ||
+ | http:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Для отправки данных на сервер создать POST-запрос одним из трех способов: | ||
+ | |||
+ | 1. В адресной строке в качестве GET-параметра указать API-токен. Например: | ||
+ | |||
+ | < | ||
+ | http:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | 2. В теле запроса указать параметр API-токен | ||
+ | |||
+ | 3. В заголовке запроса («Bearer») указать параметр «Authorization», | ||
+ | |||
+ | **Синхронизация времени сервера и источника данных** | ||
+ | |||
+ | Для синхронизации времени формируется запрос метки времени, | ||
+ | |||
+ | Пример запроса: | ||
+ | |||
+ | < | ||
+ | http:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Пример ответа: | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Запросы ==== | ||
+ | |||
+ | **Запрос списка шин** | ||
+ | |||
+ | Запрос списка шин формируется для отображения параметров активных шин в системе. Параметр GET запроса – «''/ | ||
+ | |||
+ | Таблица 1. | ||
+ | |||
+ | ^ Параметр в JSON^Поле в системе мониторинга| | ||
+ | |//id// |Уникальный номер шины в системе мониторинга| | ||
+ | |//code// |Код шины| | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |||
+ | Пример запроса: | ||
+ | < | ||
+ | |||
+ | http:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Пример ответа: | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }] | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | **Запрос информации по выбранной шине** | ||
+ | |||
+ | Для получения параметров шины и списка устройств необходимо сформировать GET-запрос «''/ | ||
+ | |||
+ | Для выбора шины необходимо указать «'' | ||
+ | |||
+ | Таблица 2. | ||
+ | |||
+ | ^Параметр в JSON (массив значений: | ||
+ | |//id// |Уникальный номер устройства в системе мониторинга| | ||
+ | |//code// |Код устройства| | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |||
+ | Пример запроса: | ||
+ | < | ||
+ | |||
+ | http:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Пример ответа: | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | **Запрос информации по выбранному устройству** | ||
+ | |||
+ | Для получения параметров устройства и списка каналов необходимо сформировать GET-запрос «''/ | ||
+ | |||
+ | Для выбора устройства необходимо указать «'' | ||
+ | |||
+ | Таблица 3. | ||
+ | |||
+ | ^Параметр в JSON (массив значений: | ||
+ | |//id// |Уникальный номер канала в системе мониторинга| | ||
+ | |// | ||
+ | |//addr// |Адрес| | ||
+ | |//code// |Код канала| | ||
+ | |//height// |Высотная отметка, | ||
+ | |// | ||
+ | |// | ||
+ | |||
+ | Пример запроса (запрос возвращает данные за последние 24 часа): | ||
+ | < | ||
+ | |||
+ | http:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Пример ответа: | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }], | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | **Запрос данных измерения по выбранному Каналу** | ||
+ | |||
+ | Для получения информации об измерениях за выбранный период времени необходимо сформировать GET-запрос «''/ | ||
+ | |||
+ | Для выбора канала необходимо указать «'' | ||
+ | |||
+ | Таблица 4. | ||
+ | |||
+ | ^Параметр в JSON^Поле в системе мониторинга| | ||
+ | |// | ||
+ | |//dateTo// |Дата окончания запрошенного периода| | ||
+ | |// | ||
+ | |// | ||
+ | |||
+ | Пример запроса: | ||
+ | < | ||
+ | |||
+ | http:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Пример ответа: | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | , { | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | }] | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | **Запрос статусов по объекту мониторинга** | ||
+ | |||
+ | Для получения статусов по каналам (сигнализации) на объекте мониторинга необходимо сформировать GET-запрос «''/ | ||
+ | |||
+ | Для выбора объекта мониторинга укажите «'' | ||
+ | |||
+ | Таблица 5. | ||
+ | |||
+ | ^Параметр в JSON^Поле в системе мониторинга| | ||
+ | |//id// |Уникальный номер объекта мониторинга| | ||
+ | |//title// |Название объекта| | ||
+ | |// | ||
+ | |//date// |Дата и время запроса данных| | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |||
+ | Пример запроса: | ||
+ | < | ||
+ | |||
+ | http:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Пример ответа: | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }] | ||
+ | },{ | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }] | ||
+ | }, .... | ||
+ | |||
+ | </ | ||
+ | |||
+ | **Запрос элементов конструкции по объекту мониторинга** | ||
+ | |||
+ | Для получения информации о параметрах конструктивных элементов и сигнализации по каналам на объекте мониторинга необходимо сформировать GET-запрос «'' | ||
+ | |||
+ | Таблица 6. | ||
+ | |||
+ | ^Параметр в JSON^Поле в системе мониторинга| | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |||
+ | Пример запроса: | ||
+ | < | ||
+ | |||
+ | http:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Пример ответа: | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }] | ||
+ | }], | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }] | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }] | ||
+ | }], | ||
+ | " | ||
+ | }] | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Запись данных по протоколу ==== | ||
+ | |||
+ | Запись данных в базу данных Систему Мониторинга осуществляется при условии, | ||
+ | |||
+ | Для записи данных необходимо сформировать POST-запрос «''/ | ||
+ | |||
+ | Для выбора устройства укажите «'' | ||
+ | |||
+ | Таблица 7. | ||
+ | |||
+ | ^Параметр в JSON^Поле в системе мониторинга| | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |// | ||
+ | |||
+ | Пример адреса для POST запроса: | ||
+ | < | ||
+ | |||
+ | http:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Пример JSON-формата, | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Сообщения об ошибках в протоколе ==== | ||
+ | |||
+ | А. Ответ при отсутствии ID объекта мониторинга при запросе списка элементов: | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | Б. Ответ при отключении пользователя (чек-бокс «Доступ к API» выключен у Пользователя): | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | В. Ответ при неверном API-Токене: | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | Г. Не найдена шина в системе мониторинга: | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | Д. При записи данных протокол обмена указан неверно (не «REST API (JSON)»): | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | Е. Шина выключена или не создана: | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | Ж. Код устройства не найден: | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | З. Устройство выключено или отсутствует в системе мониторинга: | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | И. Ответ при отсутствии записи отдельных каналов в базе данных (при этом запись в базе данных других каналов не останавливается): | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||