Шаблон ответа
Шаблон ответа — тело, которое эмулятор возвращает на запрос к активному адресу. Шаблон задаётся на странице «Настройки адреса» и может содержать динамические поля — значения, которые эмулятор подставляет из самого запроса.
Динамические поля
Динамическое поле описывает, что извлечь из входящего запроса и под каким именем подставить в шаблон ответа. Поля настраиваются в карточке «Динамические поля».
Таблица полей показывает колонки «Имя поля», «Описание», «Источник данных» и «Тип извлечения»; строка выбирается кликом, справа открывается её форма. Кнопка «Добавить поле» создаёт новое поле, кнопка «Очистить» удаляет все поля адреса, значок корзины в строке — одно поле.
Форма поля содержит:
- «Имя поля в шаблоне» — имя, под которым поле подставляется в шаблон; вводится без фигурных скобок, они добавляются автоматически, и в шаблоне поле выглядит как
{'{{cardNumber}}'}; - «Описание поля» — произвольное пояснение, например «Номер карты»;
- «Источник данных» — где искать значение: «Тело запроса (Body)», «Заголовки (Headers)», «Параметры запроса»; можно отметить несколько источников;
- «Способ извлечения» — «Границы» или «Регулярное выражение».
При способе «Границы» задаются «Левая граница» и «Правая граница»: эмулятор берёт то, что находится между ними.
Например, левая граница "name": " и правая граница ", извлекут значение поля name из тела запроса в формате JSON.
При способе «Регулярное выражение» задаётся выражение с группой захвата, например X-Card-Number:\s*([^\r\n]+) — подставляется содержимое первой группы.
Правила извлечения:
- поиск ведётся по отмеченным источникам в порядке «Параметры запроса», «Заголовки (Headers)», «Тело запроса (Body)»;
- регистр символов при поиске не учитывается;
- берётся первое совпадение;
- если совпадений нет, поле подставляется пустой строкой — запрос при этом не считается ошибочным.
Динамическое поле, стоящее в самом начале шаблона, не подставляется. Чтобы значение подставилось, шаблон должен начинаться с любого символа перед полем — например, с открывающей фигурной скобки объекта JSON или с тега XML.
Редактор шаблона
Шаблон редактируется в карточке «Шаблон ответа».
Переключатель в заголовке карточки задаёт формат шаблона: «JSON», «XML» или «Текст». Кнопка «Форматировать» приводит содержимое к читаемому виду с отступами.
Слева от редактора расположена панель «Доступные поля» со списком динамических полей адреса. Поле вставляется в шаблон кликом по нему (в текущую позицию курсора) или перетаскиванием в нужное место. Вставленное поле редактор обрабатывает как единое целое: курсор и удаление работают с ним целиком, а не посимвольно.
Пример шаблона в формате JSON:
{
"status": "success",
"userId": "{{userId}}",
"statusCode": {{statusCode}},
"data": {}
}Редактор подсвечивает проблемы прямо в тексте:
| Сообщение | Причина |
|---|---|
| «Пустое имя переменной» | В шаблоне встретилась конструкция из двойных фигурных скобок без имени |
| «Переменная «X» не объявлена в динамических полях» | Имя в шаблоне не совпадает ни с одним динамическим полем адреса |
| «JSON: …» | Шаблон в формате «JSON» не разбирается как корректный JSON |
| «XML: …» | Шаблон в формате «XML» не разбирается как корректный XML |
При проверке формата динамические поля временно заменяются значением-заглушкой, поэтому шаблон проверяется целиком, вместе с подстановками.
Шаблон сохраняется вместе с остальными настройками адреса кнопкой «Сохранить настройки».