Критерии мониторинга: JavaScript Expression
Можно задавать кастомные критерии через JavaScript-выражения. Выражение выполняется в контексте результата проверки и должно возвращать boolean: true — критерий выполнен, false — нет.
JavaScript expression доступен для типов: API, Website, Incoming Request.
Website и API monitors
Доступные переменные:
| Переменная | Описание | Тип |
|---|---|---|
responseBody | Тело ответа. HTML/XML — строка; JSON — объект JSON | string или JSON |
responseHeaders | Заголовки ответа | Dictionary<string> |
responseStatusCode | HTTP status code | number |
responseTimeInMs | Время отклика, мс | number |
Пример
Проверка строки в теле ответа:
/**
* Если тело — JSON, responseBody будет объектом JSON, например:
* {
* "item": "hello"
* }
**/
"{{responseBody.item}}" === "hello"
// заголовки ответа
"{{responseHeaders.contentType}}" === "application/json"
// регулярные выражения
"{{responseBody.item}}".match(/hello/)
// status code
{{responseStatusCode}} === 200
// логические операторы
"{{responseBody.item}}" === "hello" && {{responseStatusCode}} === 200
// массивы
/**
* Если тело:
* {
* "item": [{
* "name": "hello"
* }]
* }
**/
"{{responseBody.items[0].name}}" === "hello"Incoming Request monitors
| Переменная | Описание | Тип |
|---|---|---|
requestBody | Тело запроса | string или JSON |
requestHeaders | Заголовки запроса | Dictionary<string> |
Пример
"{{requestBody.item}}" === "hello"
"{{requestHeaders.contentType}}" === "text/html"
"{{requestBody.item}}".match(/hello/)
"{{requestBody.item}}" === "hello" && "{{requestHeaders.contentType}}" === "text/html"
"{{requestBody.items[0].name}}" === "hello"На что обратить внимание
- Таймаут скрипта — 1 секунда; дольше — результат
false. {{var}}подставляет значение: для сравнения со строкой берите в кавычки, например"{{responseBody.item}}" === "hello"; для числа кавычки не нужны:{{responseStatusCode}} === 200.