Перейти к содержимому

Директивы .http

Путь указывает на часть ответа.

Путь Значение
status HTTP-код ответа, например 200
duration Время от отправки запроса до получения всего тела, в миллисекундах
body Всё тело: разобранный JSON или текст как есть, если это не JSON
body.user.name Поле JSON-объекта
body.items[0] Элемент массива, нумерация с нуля
body["key with spaces"] Поле, имя которого не простое слово
headers.content-type Заголовок ответа; регистр имени не важен

Индексировать можно только body. Если тело не JSON, доступен только сам body.

> assert <путь> <оператор> <значение>
> assert <путь> exists
Оператор Истинно, когда
== равно
!= не равно; также истинно, если пути нет
< <= > >= сравнение чисел; строки сравниваются по алфавиту
contains строка содержит подстроку, массив — элемент, объект — ключ
exists путь есть в ответе (без значения)

Значение после оператора — JSON-литерал:

> assert status == 200
> assert body.name == "Viktor"
> assert body.active == true
> assert body.deleted_at == null
> assert body.tags contains "admin"

Если это не валидный JSON, значение считается строкой, поэтому для простых слов кавычки не обязательны: > assert body.state == active — то же, что == "active".

Числа и строки из цифр сравниваются как числа — удобно для заголовков, которые всегда строки:

> assert headers.content-length < 1024
> save <имя> = <путь>

Имя переменной может содержать буквы, цифры, _ и -. Строки сохраняются как есть, остальное — компактным JSON. Если пути нет, запрос считается упавшим.