JsonPathExtractToVars#
Действие аналогично действию JsonPathExtract, однако не имеет выхода в виде сообщения, так как результатом выполнения являются заполненные значения указанных переменных.
Параметры:
Название |
Обязательность |
Допустимые значения |
Описание |
|---|---|---|---|
expressions |
+ |
Список |
Обязательный параметр, содержащий список правил поиска и заполнения переменных. |
Каждое правило из списка expressions имеет следующие элементы:
Название |
Допустимые значения |
Описание |
|---|---|---|
path |
строка |
Выражение json-path, обязательный параметр |
expectedResult |
имя java-класса, либо auto |
Имя java класса соответствующего ожидаемому результату, по умолчанию |
allowNotFound |
true/false |
Если указано «true», то если искомый элемент не найден, то возвращается пустая строка, иначе выдается ошибка. По умолчанию - true. |
var |
строка |
Имя переменной nginx (может как использоваться префикс $, так и не использоваться) |
toJson |
булево значение |
Тип результирующего преобразования, если |
Пример:
service:
service_static:
- id: 1
url: /sample
listen:
- port: 8083
chains:
request_chains:
- actions:
- action: JsonPathExtractToVars
params:
expressions:
- path: "$.address.streetAddress"
var: clj_street
- action: JsonPathExtractToVars
params:
expressions:
- path: "$.address.city"
var: clj_city
message: $clj_request_body
optional:
response_body: "OK"
response_code: 200
response_headers:
- name: X-Header-Street
value: "clj_street"
- name: X-Header-City
value: "clj_city"
В приведенном примере мы извлекаем из приходящего в теле запроса JSON элементы streetAddress и city и помещаем их в переменные clj_street и clj_city. Значения этих переменных используются для заполнения заголовков X-Header-Street и X-Header-City, которые отправляются клиенту в ответе.