Переменные в цепочках записанного трафика
Рекордер захватывает запросы и ответы дословно. При экспорте сессии
в скрипт (коллекция Postman, нагрузочный или функциональный тест,
моки) литералы — токены, идентификаторы заказа, CSRF — попадают
в результат как есть. Как только бэкенд ротирует любой из них,
сгенерированный артефакт перестаёт работать.
Опция chain-variables превращает эти литералы в переменные.
Что находится автоматически
Движок сканирует ответ каждого записанного запроса и ищет, какие
значения позже появляются в запросе следующего. Источники:
- ключи в JSON (любой вложенности:
data.user.id,items[0].uuid) - заголовки ответа (
X-CSRF-Token,X-Trace-Idи т.п.) - пары
Set-Cookie - заголовки с URL внутри (
Location,Link,Content-Location) —
и сам URL целиком, и каждый его path / query параметр отдельно
Точки подстановки:
- сегменты URL-пути
- значения query-строки
- заголовки запроса (
Authorization: Bearer <token>—
префиксBearerсохраняется) - cookies в
Cookie: - поля
application/x-www-form-urlencoded - текстовые поля
multipart/form-data(файлы пропускаются) - скаляры в JSON-теле любой вложенности
Как ищется имя переменной
Движок сравнивает значения целиком (подстроки не учитываются —
чтобы не было ложных совпадений) и генерирует читаемое имя из
исходного пути:
| Источник | Имя переменной |
|---|---|
response.body.json.user.id |
user_id |
response.body.json.items[0].uuid |
items_0_uuid |
response.header.X-CSRF-Token |
x_csrf_token |
response.set-cookie.session |
session_cookie |
response.header.Location:query.code |
code |
Все точки подстановки в последующих запросах переписываются с
{{name}} вместо литерала.
Числовые значения (12345, 987654321) по умолчанию пропускаются —
короткие целые ID повторяются между независимыми эндпойнтами и
давали бы шумные переменные. Включить через флаг
Include numeric values.
Где включить
В расширении (Mockarty Capture)
На вкладке Действия в side-panel расширения:
☑ Заменять связанные значения на
{{var}}
По умолчанию ВКЛ. Виден только когда среди доступных действий есть
хоть одно экспортирующее скрипт. Тогл влияет сразу на все «Save as …»
кнопки — коллекция Postman, функциональный тест, нагрузочный скрипт,
моки.
В UI админки
В меню Export записанной сессии есть тот же тогл рядом с
выбором формата.
Через API
Добавь ?variableize=1 к:
POST /api/v1/recorder/:id/export(HAR)POST /api/v1/recorder/:id/export-postmanPOST /api/v1/recorder/:id/export-perfPOST /api/v1/recorder/:id/export-testPOST /api/v1/recorder/:id/mocks
Через CLI
# Превью переписывания — переменные + extract-шаги, без скачивания.
mockarty-cli recorder variableize <session-id>
# С опциями:
mockarty-cli recorder variableize <session-id> \
--include-numeric --max-vars 32 --entries e1,e2,e3
Что попадает в сгенерированные артефакты
| Формат | Подстановки в запросах | Извлечение / seed |
|---|---|---|
| Postman v2.1 | {{var}} в URL/header/body |
pm.collectionVariables.set(...) в test-событиях источников + блок variable с захваченными значениями |
| Perf-скрипт | JS-template-конкатенация: "prefix/" + user_id |
var name = "<sample>"; в шапке + комментарий // := на source-запросе с путём к response |
| Test-скрипт | Та же JS-конкатенация | var name = r1.body.x; строки извлечения после исходного запроса |
| Моки | {{var}} в http.route / теле / заголовках |
(моки сами потребляют переменные в рантайме) |
| HAR | {{var}} в URL/теле/заголовках consumer’а |
Sidecar в response-header X-Mockarty-Variables (JSON {variables, extracts}) |
Ограничения
- Переменные ищутся только из предыдущих ответов; обратные
связи не делаются (и не имеют смысла в реальной цепочке). - Слишком короткие / тривиальные значения (
true,null,42,
HTTP-коды) по умолчанию фильтруются. - Если одно и то же значение пришло из нескольких источников,
используется одна переменная; повторные источники ссылаются на
то же имя. - Файловые части
multipart/form-dataне извлекаются (это бинарь). - Повторный запуск
Variableizeна уже параметризованных шагах —
no-op, не будет «двойной» подстановки.
Если ничего не нашлось
- Понизь минимальную длину значения через API
(minValueLength) — по умолчанию 4 символа. - Включи Include numeric values, если в цепочке только голые
целочисленные ID без префиксов. - Проверь, что в захваченном ответе реально есть то значение,
которое потом потребляет следующий запрос. Некоторые прокси
обрезают тела — рекордер показывает байты ровно как видел.