[15813] Снова про экспорт и импорт

Хочу продолжить тему [15736] Экспорт и импорт должны работать из командной строки
Прошу прощения у разработчиков, я ошибся при выдаче техзадания. Забыл указать, что экспорт должен работать не только для локального сервера, но и для удалённого. Для этого понадобится ключ командной строки с IP адресом сервера, с которого нужно экспортировать данные.

Тут, думаю, CLI сервера не сильно поможет. Потребуется авторизация через токен и обращение к удалённым серверам. Как вариант мы можем открыть API для импорта и экспорта данных в формате ЛЭРС xml. Затем выполнить запросы можно с помощью cURL, который уже включён в комплект современных версий Windows.

Я приведу пример как это можно сделать в среде Powershell, но подойдёт и cmd и bash, если вы будете запускать команды на linux.

Для начала нужно будет получить токен для пользователя, которому доступны нужные объекты и точки и который обладает разрешениями “Просмотр и экспорт данных” и “Импорт и ручной ввод данных”.

Токен можно сохранить в переменную среды под именем, например, LERS_IMPORT_TOKEN для пущей безопасности, и чтобы не копировать длинный токен в каждую команду.

Экспорт данных в файл c:\temp\data.xml по всем точкам в группе “Мои объекты” можно будет выполнить следующей командой

curl -f -X "GET" -H "accept: text/xml" -H "Authorization: Bearer $LERS_IMPORT_TOKEN" -G --data "dt=Day" --data "from=30d" --data-urlencode "nodeGroup=Мои объекты" "http://localhost:10000/api/v1/Data/Export" > c:\temp\file.xml

Импорт:

curl -X "PUT" -H "Content-Type: text/xml" --data "@c:\temp\file.xml"  -H "Authorization: Bearer $env:LERS_IMPORT_TOKEN" 'http://localhost:10000/api/v1/Data/Import?overwrite=true'

Как я понял, используя cURL и REST API, я смогу в скрипте Powershell получить токен и экспортировать/импортировать данные в формате xml.
Сейчас REST API не поддерживает экспорт и импорт xml. Да, такой вариант меня бы устроил.

Лучше, конечно, токен запрашивать не в скрипте, а сформировать его заранее и сохранить в переменной среды, чтобы лишний раз не использовать пароль. А так да, имея токен можно будет это сделать.

Пожалуйста откройте REST API для импорта и экспорта данных в формате ЛЭРС xml.

Мы откроем API, а формат вы сможете выбрать самостоятельно. По умолчанию будет json. Для экспорта в XML нужно будет передать заголовок Accept: text/xml

Потом этот файл можно будет или импортировать через REST, указав заголовок Content-Type: text/xml, или импортировать через АРМ или веб интерфейс.

В общем, в результате обсуждений решили, что API будет указывать начало и конец периода, как для всех остальных конечных точек. Сделаем так для того, чтобы все REST API были максимально понятны и однообразны.

Для экспорта нужно будет воспользоваться маршрутом

GET http://localhost:10000/api/v1/Data/Export/2025-01-01/2025-03-10?nodeGroup=Название_группы_объектов
Authorization: Bearer <ТОКЕН>
Accept: text/xml

В ответе вернётся файл в формате XML, который можно использовать для импорта.

Импорт выполняется таким запросом

PUT http://localhost:10000/api/v1/Data/Import?overwrite=true
Authorization: Bearer <ТОКЕН>
Content-Type: text/xml

В теле передаётся XML-файл с данными.

С помощью этих API можно автоматизировать импорт и экспорт в powershell с использованием Invoke-RestMethod, или в любой оболочке с помощью curl.

Сделаем в следующей версии 3.61.

1 лайк