Мониторы

Критерии мониторинга: JavaScript Expression

Можно задавать кастомные критерии через JavaScript-выражения. Выражение выполняется в контексте результата проверки и должно возвращать boolean: true — критерий выполнен, false — нет.

JavaScript expression доступен для типов: API, Website, Incoming Request.

Website и API monitors

Доступные переменные:

ПеременнаяОписаниеТип
responseBodyТело ответа. HTML/XML — строка; JSON — объект JSONstring или JSON
responseHeadersЗаголовки ответаDictionary<string>
responseStatusCodeHTTP status codenumber
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.