SAYMON документация

Skip to end of metadata
Go to start of metadata

Если надо читать и записывать данные в объект с помощью http-запроса непосредственно из командной строки (терминала). Далее мы рассмотрим несколько простых примеров с пошаговым усложнением.

Пример с использованием Basic Authentication

Пример чтения данных:
curl -H "Content-Type: application/json" -X GET -u demo:demo https://saas.saymon.info/node/api/users/current
Пример записи данных:
curl -H "Content-Type: application/json" -X POST -d '{"entityId": "575589a923b054f746ad2f78","entityType": "obj","period": "1000","payload": {"string": "some text", "numeric": 17, "boolean": true}}' -u demo:demo https://saas.saymon.info/node/api/objects/575589a923b054f746ad2f78/stat

Что есть что:

  1. В данном случае используется команда curl.
  2. "entityId": "575589a923b054f746ad2f78" - уникальный идентификатор объекта, в который надо записать данные.
  3. "period": "1000" - время актуальности отправленных данных в миллисекундах, спустя которое объект перейдет в состояние "не проверяется".
  4. "payload": {"string": "some text", "numeric": 17, "boolean": true} - непосредственно данные в формате "имя_метрики":значение.
  5. demo:demo - логин и пароль вашей учетной записи.
  6. https://saas.saymon.info/node/api/objects/575589a923b054f746ad2f78/stat - ссылка, содержащая адрес сервера (https://saas.saymon.info) и ранее упомянутый уникальный идентификатор объекта (575589a923b054f746ad2f78).

Пример с использованием Cookie

Создаем сессию и сохраняем sid для дальнейшего взаимодействия с сервером:
curl --cookie-jar cookies.txt -H "Content-Type: application/json" -X POST  --data '{"login": "demo", "password": "demo"}' https://saas.saymon.info/node/api/users/session

Проверка работы запросов с использованием cookie на примере запроса информации о текущем пользователе:
curl --cookie cookies.txt https://saas.saymon.info/node/api/users/current

Пример записи данных с использованием cookie:
curl --cookie cookies.txt -H "Content-Type: application/json" -X POST -d '{"entityId": "575589a923b054f746ad2f78","entityType": "obj","period": "1000","payload": {"string": "some text", "numeric": 17, "boolean": true}}' https://saas.saymon.info/node/api/objects/575589a923b054f746ad2f78/stat

Что есть что:

  1. В данном случае используется команда curl.
  2. "entityId": "575589a923b054f746ad2f78" - уникальный идентификатор объекта, в который надо записать данные.
  3. "period": "1000" - время актуальности отправленных данных в миллисекундах, спустя которое объект перейдет в состояние "не проверяется".
  4. "payload": {"string": "some text", "numeric": 17, "boolean": true} - непосредственно данные в формате "имя_метрики":значение.
  5. demo:demo - логин и пароль вашей учетной записи.
  6. https://saas.saymon.info/node/api/objects/575589a923b054f746ad2f78/stat - ссылка, содержащая адрес сервера (https://saas.saymon.info) и ранее упомянутый уникальный идентификатор объекта (575589a923b054f746ad2f78).

Пример записи табличных данных

Допустим, нам надо передать в объект следующую таблицу с данными:

 rownamecol1namecol2namecol3name
 row1name111213
 row2name212223
 row3name313233

Создаем сессию и сохраняем sid для дальнейшего взаимодействия с сервером:

curl --cookie-jar cookies.txt -H "Content-Type: application/json" -X POST  --data '{"login": "demo", "password": "demo"}' https://saas.saymon.info/node/api/users/session

Записываем данные с использованием cookie:

curl --cookie cookies.txt -H "Content-Type: application/json" -X POST -d '{"entityId": "575589a923b054f746ad2f78","entityType": "obj","period": "1000","payload": {"row1data":{"rowname":"row1name","col1name":11,"col2name":12,"col3name":13},"row2data":{"rowname":"row2name","col1name":21,"col2name":22,"col3name":23},"row3data":{"rowname":"row3name","col1name":31,"col2name":32,"col3name":33}}}' https://saas.saymon.info/node/api/objects/575589a923b054f746ad2f78/stat

Что есть что:

  1. В данном случае используется команда curl.
  2. "entityId": "575589a923b054f746ad2f78" - уникальный идентификатор объекта, в который надо записать данные.
  3. "period": "1000" - время актуальности отправленных данных в миллисекундах, спустя которое объект перейдет в состояние "не проверяется".
  4. "payload": {...} - непосредственно передаваемые табличные данные.
  5. demo:demo - логин и пароль вашей учетной записи.
  6. https://saas.saymon.info/node/api/objects/575589a923b054f746ad2f78/stat - ссылка, содержащая адрес сервера (https://saas.saymon.info) и ранее упомянутый уникальный идентификатор объекта (575589a923b054f746ad2f78).


Вот менее абстрактный пример:

 ИмяРостВесПол
 Вася17787м
 Петя18659м
 Даша16945ж

Создаем сессию и сохраняем sid для дальнейшего взаимодействия с сервером:

curl --cookie-jar cookies.txt -H "Content-Type: application/json" -X POST  --data '{"login": "demo", "password": "demo"}' https://saas.saymon.info/node/api/users/session

Далее записываем данные с использованием cookie.

Вариант 1:

curl --cookie cookies.txt -H "Content-Type: application/json" -X POST -d '{"entityId": "575589a923b054f746ad2f78","entityType": "obj","period": "1000","payload": {"Про Васю":{"Имя":"Вася","Рост":177,"Вес":87,"Пол":"м"},"Про Петю":{"Имя":"Петя","Рост":186,"Вес":59,"Пол":"м"},"Про Дашу":{"Имя":"Даша","Рост":169,"Вес":45,"Пол":"ж"}}}' https://saas.saymon.info/node/api/objects/575589a923b054f746ad2f78/stat

Вариант 2:

curl --cookie cookies.txt -H "Content-Type: application/json" -X POST -d '{"entityId": "575589a923b054f746ad2f78","entityType": "obj","period": "1000","payload": [{"Имя":"Вася","Рост":177,"Вес":87,"Пол":"м"},{"Имя":"Петя","Рост":186,"Вес":59,"Пол":"м"},{"Имя":"Даша","Рост":169,"Вес":45,"Пол":"ж"}]}' https://saas.saymon.info/node/api/objects/575589a923b054f746ad2f78/stat

В чем разница данных вариантов и когда какой использовать?

Всегда используйте первый, если есть возможность. Он, конечно, более строгий в плане описания данных, но взамен обеспечивает бОльшую предсказуемость, что, например, позволит строить для объектов виджеты по умолчанию. Данный вариант хорошо подходит для заранее известного и конечного набора передаваемых данных, т.е. мы знаем, что всегда будем передавать данные про Васю, Петю и Дашу:

Структура данных Варианта 1:
"payload": {
"Про Васю":{"Имя":"Вася","Рост":177,"Вес":87,"Пол":"м"},
"Про Петю":{"Имя":"Петя","Рост":186,"Вес":59,"Пол":"м"},
"Про Дашу":{"Имя":"Даша","Рост":169,"Вес":45,"Пол":"ж"}
}

Второй вариант менее строгий, но больше подходит для непредсказуемого набора данных, например, результата запроса "Самые смелые сотрудники компании за прошлую неделю" в базе данных. Сравните:

Структура данных Варианта 2:
"payload": [
{"Имя":"Вася","Рост":177,"Вес":87,"Пол":"м"},
{"Имя":"Петя","Рост":186,"Вес":59,"Пол":"м"},
{"Имя":"Даша","Рост":169,"Вес":45,"Пол":"ж"}
]

Для любого варианта соблюдать количество полей не обязательно, можно без проблем проявить некоторую слабость:

Структура данных Варианта 1:
"payload": {
"Про Васю":{"Имя":"Вася","Рост":177,"Вес":87,"Пол":"м"},
"Про Петю":{"Имя":"Петя","Рост":186,"Вес":59,"Пол":"м"},
"Про Дашу":{"Имя":"Даша","Рост":169,"Вес":45,"Пол":"ж","Комментарий":"Симпатичная"}
}

Пример переопределения типов передаваемых значений

Согласитесь, что вместо безликого

 ИмяКПД
 Вася35
 Петя86
 Даша146

гораздо приятней видеть

 ИмяКПД
 Вася35 %
 Петя86 %
 Даша146 %

Для этого необходимо использовать REST-метод /node/api/objects/:id/stat/meta (POST).

Рассмотрим на примере.

Создаем сессию и сохраняем sid для дальнейшего взаимодействия с сервером:

curl --cookie-jar cookies.txt -H "Content-Type: application/json" -X POST  --data '{"login": "demo", "password": "demo"}' https://saas.saymon.info/node/api/users/session

Записываем данные с использованием cookie:

curl --cookie cookies.txt -H "Content-Type: application/json" -X POST -d '{"entityId": "575589a923b054f746ad2f78","entityType": "obj","period": "1000","payload": {"Про Васю":{"Имя":"Вася","КПД":35},"Про Петю":{"Имя":"Петя","КПД":86},"Про Дашу":{"Имя":"Даша","КПД":146}}}' https://saas.saymon.info/node/api/objects/575589a923b054f746ad2f78/stat

Далее задаем тип метрике, используя её имя:

curl --cookie cookies.txt -H "Content-Type: application/json" -X POST -d '{"КПД": {"type": "PERCENTILE","changeRate": "ALWAYS"}}' https://saas.saymon.info/node/api/objects/575589a923b054f746ad2f78/stat/meta

Задать метрикам тип можно один раз непосредственно после создания объекта, если заранее известны имена метрик.

Все доступные типы описаны в REST-методе /node/api/objects/:id/stat/meta (GET).

Очень важная заметка

Да пребудет с вами сила! Кстати!

Для записи данных необходимы права на редактирование данного объекта из-под учетной записи, логин и пароль которой используются при отправке запроса.

Связанные статьи