RequestStep
RequestStep узел - это узел для отправки HTTP-запросов. Наш инструмент позволяет гибко сконфигурировать запрос и использовать его как отдельно, так и в составе сценария.
В дереве проекта RequestStep узел выглядит следующим образом

Вид RequestStep узла в дереве
Остановимся на узле поподробнее. Цвет левого верхнего кружка указывает на статус HTTP-запроса: серый - если запрос не выполнялся, зеленый - в случае успешного HTTP-кода (например, 200, 201 и т.д.), красный - в случае неудачного HTTP-кода (например, 404, 500 и т.д.). Цвет иконки листочка указывает на статус выполнения дочернего Assertion узла: серый - если запуск не выполнялся, зеленый - в случае если после запуска, Assertion узел либо отсутствует, либо существует и его выполнение завершилось успешно, красный - в случае, если выполнение Assertion узла завершилось с ошибкой (не все проверки были пройдены).
В дереве для данного типа узла доступны следующие пункты меню:

Контекстное меню для RequestStep узла
- Add node. Добавление узла-потомка. В подменю можно выбрать тип узла.
- Rename. Переименовать узел.
- Duplicate. Сделать копию узла. Новый узел будет иметь название NodeName [Copy [number]].
- Remove node. Удалить узел.
- Run. Запустить узел.
- Share. Поделиться узлом. При это в буфере обмена создается ссылка, которая содержит всю информацию о текущем узле.
- Show in explorer. Открыть папку с узлом в файловом менеджере.
При создании RequestStep узла (или при двойном клике по уже существующему) открывается вкладка данного узла. Выглядит она следующим образом:

Вкладка RequestStep узла
Рассмотрим подробнее каждую из частей интерфейса.
Верхняя часть запроса выглядит следующ им образом:

Верхняя часть запроса
На скрине выше отмечены следующие пункты
- 1.Метод запроса. На данный момент поддерживаются следующие методы:
- GET — получение ресурса
- POST — создание ресурса
- PUT — обновление ресурса
- DELETE — удаление ресурса
- PATCH — для частичного изменения ресурса
- OPTIONS — для описания параметров соединения с ресурсом
- 2.Поле для URL.
- 3.Кнопка для запуска запроса
- 4.
Ниже представлена панель редактирования заголовков, query параметров, авторизации и тела запроса. Так выглядит данная панель для POST запросов:

Панель редактирования параметров запроса
Данная панель организована в виде вкладок. На данный момент существуют следующие вкладки:
- Headers - для редактирования списка HTTP-заголовков
- Query parameters - для редактирования списка query параметров
- Body - для конфигурирования тела запроса
- Other - конфигурирование прочих параметров запроса
Вкладки Headers и Query parameters с точки зрения интерфейса очень похожи - это обычные таблицы с возможностью массового редактирования и отключением строк. Отдельно стоит добавить, что заголовки поддерживают механизм установки HTTP-заголовков по умолчанию.
Вкладка Other выглядит следующим образом:

На данный момент можно отредактировать параметр Requires SSL certificates be valid - проверять валидность SSL-сертификата узла. Параметр по умолчанию: Inherit, наследует значение родителя узла, если у родителя задан Inherit, параметр выключен. Возможные варианты:
- Yes — да
- No — нет
- Inherit — наследовать
Отдельно останови мся на вкладке Body, которая выглядит следующим образом:

Вкладка Body
В выпадающем списке можно выбрать тип тела. На данный момент поддерживаются следующие типы
- JSON - для отправки JSON данных. Сами данные редактируются в текстовом поле с подсветкой JSON-синтаксиса и с поддержкой механизма переменных . При отправке запроса в список HTTP-заголовков добавляется заголовок
Content-Type
со значениемapplication/json
. - Form data - для редактирования
multipart/form-data
форм. Имеет табличный вид с возможностью массового редактирования . В строках таблицы в качестве значения могут выступать как обычные строки, так и ссылки на файлы. - Form URL encoded - для редактирования
application/x-www-form-urlencoded
форм. Имеет табличный вид с возможностью массового редактирования . - File - для отправки в теле содержимое файла.
- XML - для отправки XML данных. Сами данные редактируются в текстовом поле с подсветкой XML-синтаксиса и с поддержкой механизма переменных . При отправке запроса в список HTTP-заголовков добавляется заголовок
Content-Type
со значениемapplication/xml
. - Text - для отправки текстовых данных. Сами данные редактируются в текстовом поле с поддержкой механизма переменных . При отправке запроса в список HTTP-заголовков добавляется заголовок
Content-Type
со значениемtext/plain
.
Давайте выполним запрос на url https://testmace-stage.herokuapp.com/posts и посмотрим, как выглядит секция ответа:

Секция ответа RequestStep узла
Верхняя часть секции показывает краткую информацию об ответе: код ответа с указанием, успешный он или нет, время выполнения запроса и размер ответа.
Нижняя область секции ответа разбита на несколько вкладок:
- Response body - сод ержит тело ответа, представленное различными способами. На данный момент имеются следующие представления тела ответа:
- Parsed- ответ в виде дерева. Каждый лист дерева имеет контекстное меню для создания Assertion узлов и для работы с динамическими переменными
- JSON - JSON-подсветка тела ответа. Существует только в случае, когда тело ответа пришло в формате json.
- XML - XML-подсветка тела ответа. Существует только в случае, когда тело ответа пришло в формате XML.
- HTML - HTML-подсветка тела ответа. Показывается в случае, если тело ответа - HTML-страница
- Text - текстовое представление тела ответа без подсветки
- Preview - отрендеренный вариант тела ответа. Показывается в случае, если тело ответа - HTML-страница
- Response headers - список HTTP-заголовков ответа
RequestStep узел представляет из себя папку с названием узла, внутри которой содержится файл index.yml, имеющий следующий формат:
{
"type": "object",
"properties": {
"type": {
"description": "Type of Folder node",
"const": "RequestStep",
"type": "string"
},
"assignVariables": {
"description": "List of variables assignments",
"type": "array",
"items": {
"$ref": "#/definitions/AssignVariable"
},
"default": []
},
"requestData": {
"$ref": "#/definitions/IRequestData"
},
"authData": {
"$ref": "#/definitions/IAuthorizationData",
"description": "Authorization parameters"
},
"children": {
"description": "List of children names",
"type": "array",
"items": {
"type": "string"
},
"default": []
},
"variables": {
"$ref": "#/definitions/NodeVariables",
"description": "Node variables dictionary"
},
"name": {
"description": "Node name",
"type": "string"
}
},
"required": [
"assignVariables",
"authData",
"children",
"name",
"requestData",
"type",
"variables"
],
"definitions": {
"AssignVariable": {
"type": "object",
"properties": {
"path": {
"description": "Path in $response variable (e.g. body.id)",
"type": "string"
},
"assign": {
"$ref": "#/definitions/NodeReference",
"description": "Link on target node (one of parents)"
},
"variable": {
"description": "Name of dynamic variable in target node",
"type": "string"
}
},
"required": [
"assign",
"path",
"variable"
]
},
"NodeReference": {
"type": "object",
"properties": {
"refNodePath": {
"description": "Absolute path to node",
"type": "string"
},
"type": {
"description": "Marker of reference entity",
"const": "reference",
"type": "string",
"default": "reference"
}
},
"required": [
"refNodePath",
"type"
]
},
"IRequestData": {
"type": "object",
"properties": {
"request": {
"description": "Common request parameters",
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/RequestMethod",
"description": "HTTP-method"
},
"url": {
"type": "string"
}
},
"required": [
"method",
"url"
]
},
"params": {
"description": "Query parameters",
"type": "array",
"items": {
"$ref": "#/definitions/NameValueParam"
}
},
"body": {
"$ref": "#/definitions/IRequestBody",
"description": "Body parameters"
},
"headers": {
"description": "Headers",
"type": "array",
"items": {
"$ref": "#/definitions/NameValueParam"
}
},
"disabledInheritedHeaders": {
"description": "Names of disabled headers",
"type": "array",
"items": {
"type": "string"
}
},
"strictSSL": {
"$ref": "#/definitions/StrictSSLOptions",
"description": "Requires SSL certificates be valid"
}
},
"required": [
"body",
"disabledInheritedHeaders",
"headers",
"params",
"request",
"strictSSL"
]
},
"RequestMethod": {
"enum": [
"DELETE",
"GET",
"OPTIONS",
"PATCH",
"POST",
"PUT"
],
"type": "string"
},
"NameValueParam": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
},
"isChecked": {
"type": "boolean"
}
},
"required": [
"name",
"value"
]
},
"IRequestBody": {
"type": "object",
"properties": {
"type": {
"$ref": "#/definitions/RequestBodyType",
"description": "Type of body"
},
"jsonBody": {
"description": "JSON string of body",
"type": "string"
},
"xmlBody": {
"description": "XML string of body",
"type": "string"
},
"textBody": {
"type": "string"
},
"formData": {
"description": "multipart/form-data form",
"type": "array",
"items": {
"$ref": "#/definitions/RequestStepFormData"
}
},
"formURLEncoded": {
"description": "application/x-www-form-urlencoded form",
"type": "array",
"items": {
"$ref": "#/definitions/NameValueParam"
}
},
"file": {
"description": "Link on file, which will be used as a content for body",
"type": "string"
}
},
"required": [
"file",
"formData",
"formURLEncoded",
"jsonBody",
"textBody",
"type",
"xmlBody"
]
},
"RequestBodyType": {
"enum": [
"File",
"FormData",
"FormURLEncoded",
"Json",
"Text",
"Xml"
],
"type": "string"
},
"RequestStepFormData": {
"type": "object",
"properties": {
"type": {
"$ref": "#/definitions/FormDataField"
},
"name": {
"type": "string"
},
"value": {
"type": "string"
},
"isChecked": {
"type": "boolean"
}
},
"required": [
"name",
"type",
"value"
]
},
"FormDataField": {
"enum": [
"File",
"Text"
],
"type": "string"
},
"StrictSSLOptions": {
"enum": [
"Inherit",
"No",
"Yes"
],
"type": "string"
},
"IAuthorizationData": {
"type": "object",
"properties": {
"type": {
"type": "string"
}
},
"required": [
"type"
]
},
"NodeVariables": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}
Last modified 4yr ago