Иногда при настройке мониторинга HTTP(S) или нагрузочного теста для проверки производительности веб-сайта или API необходимо отправлять HTTP-запросы с динамически изменяющейся полезной нагрузкой. Например, вам может потребоваться отправить JSON с уникальным идентификатором продукта, чтобы добавить новый продукт в базу данных приложения электронной коммерции, или фактическую дату и время на веб-сервер и т.д. Или, скажем, вам нужно параметризировать полезную нагрузку для загрузки теста API.
Dotcom-Monitor поддерживает синтаксис Razor и маски данных, чтобы позволить пользователям настроить динамически изменяющиеся и паразитируемые запросы HTTP для целей веб-мониторинга и тестирования нагрузки.
Как правило, динамическая настройка полезной нагрузки включает в себя два основных этапа:
- Определение данных тела с динамическими параметрами (JSON, XML, Text, JavaScript, HTML) в поле Post Data (Patch, Put).
- Объявление метода разбора в поле «Подготовьй сценарий». Если метод разбора не указан, система будет обрабатывать данные тела в качестве текста.
При необходимости параметризации данных тела запроса HTTP соответствующие параметры контекста могут быть объявлены в поле Prepare Script или с
опцией Параметры контекста
управления.
Использование бритвенного двигателя
Данные JSON или содержимое скрипта, передаваемые в теле запроса HTTP, могут быть динамически изменены с помощью синтаксиса двигателя Razor. При работе с синтаксисом Razor в поле Post Data используйте префикс @ , чтобы пометить следующий текст как элемент кода C# (встроенные выражения, блоки с одной инструкцией или блоки с несколькими операторами). Чтобы узнать больше о синтаксисе Razor, пожалуйста, посетите https://www.w3schools.com/asp/razor_syntax.asp.
Dotcom-Monitor поддерживает модель Razor (определяет структуру входного сообщения Razor) со следующими свойствами:
- @Model.DeviceID – переменная, которая возвращает уникальный идентификатор текущего устройства мониторинга.
- @Model.TaskID – переменная, которая возвращает уникальный идентификатор текущей задачи мониторинга.
- @Model.SessionID – переменная, которая возвращает уникальный идентификатор текущей сессии мониторинга.
Параметры контекста можно использовать в выражениях Razor. Чтобы сослаться на параметр контекста в выражении Razor, оберните ссылку на параметр контекста в квадратных скобках и приложите его имя в двойных кавычках :
@Model["ContextParameterName"]
Чтобы уведомить систему о том, что данные в корпусе запроса должны быть разобран двигателем Razor в поле Prepare Script, добавьте метод ProcessPostDataByRazor (currentTask). В противном случае элементы кода из Post Data будут разобрат как текст.
Использование масок данных в запросах HTTP
Вы можете ссылаться на параметры контекста в теле POST, обернув ссылку на имя параметра маркерными знаками с обеих сторон. Таким образом, ссылка на параметр контекста “GUID” будет введена так:
{"ContextGuid": "%%%Guid%%%"}
Здесь процентные знаки говорят системе, что это ссылка параметра контекста, а не часть строки.
Чтобы уведомить систему о том, что данные в корпусе запроса должны быть разобран указанной маской в поле Prepare Script, добавьте ProcessPostDataByMask (текущийtask, “маркерные знаки”). В противном случае параметр контекста будет проигнорирован и передан в качестве текста. В приведенной выше примере поле «Подготовьй сценарий» будет содержать следующую строку:
ProcessPostDataByMask(currentTask, "%%%");
Если параметр currentTask не зависит от имени задачи и имеет тип задачи, которая в данный момент обрабатывается.