документация:описание_протокола_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)»): | ||
| + | |||
| + | < | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | Е. Шина выключена или не создана: | ||
| + | |||
| + | < | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | Ж. Код устройства не найден: | ||
| + | |||
| + | < | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | З. Устройство выключено или отсутствует в системе мониторинга: | ||
| + | |||
| + | < | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | И. Ответ при отсутствии записи отдельных каналов в базе данных (при этом запись в базе данных других каналов не останавливается): | ||
| + | |||
| + | < | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||