Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
В этом разделе представлена справочная информация об элементах XML, которые вы используете для определения потоков прокси-сервера API.
Иерархия и синтаксис
В следующих примерах показана иерархия элементов и синтаксис элементов конфигурации потока:
Иерархия элементов
В следующем примере показана иерархия элементов конфигурации потока внутри элементов <ProxyEndpoint>
и <TargetEndpoint>
:
<ProxyEndpoint | TargetEndpoint><PreFlow>
<Request>
<Step>
<Condition>
<Name>
<Response>
<Step>
<Condition>
<Name>
<Description>
<Flows>
<Flow>
<Description>
<Condition>
<Request>
<Step>
<Response>
<Step>
<Description>
<PostFlow>
<Request>
<Step>
<Response>
<Step>
<Description>
<PostClientFlow>
(<ProxyEndpoint> only)<Response>
<Description>
// Additional configuration elements </ProxyEndpoint | TargetEndpoint>
Синтаксис
В следующем примере показан синтаксис элементов конфигурации потока. Каждый из этих элементов подробно описан в следующих разделах:
<!-- ProxyEndpoint flow configuration file --> <ProxyEndpoint ... > ... <PreFlow name="flow_name"> <Description>flow_description</Description> <Request> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Request> <Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response> </PreFlow> <Flows name="flow_name"> <Flow name="conditional_flow_name"> <Description>flow_description</Description> <Condition>property operator "value"</Condition> <Request> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Request> <Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response> </Flow> </Flows> <PostFlow name="flow_name"> <Description>flow_description</Description> <Request> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Request> <Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response> </PostFlow> <PostClientFlow name="flow_name"> <Description>flow_description</Description> <Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response> </PostClientFlow> ... </ProxyEndpoint> <!-- TargetEndpoint flow configuration file --> <TargetEndpoint ... > ... <PreFlow name="flow_name"> <Description>flow_description</Description> <Request> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Request> <Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response> </PreFlow> <Flows name="flow_name"> <Flow name="conditional_flow_name"> <Description>flow_description</Description> <Condition>property operator "value"</Condition> <Request> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Request> <Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response> </Flow> ... </Flows> <PostFlow name="flow_name"> <Description>flow_description</Description> <Request> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Request> <Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response> </PostFlow> ... </TargetEndpoint>
Эти элементы используются для определения выполнения PreFlow, Conditional Flow, PostFlow и PostClientFlow.
<Condition>
Определяет оператор, который обрабатывается во время выполнения. Если выражение оценивается как истинное, выполняется шаг или поток, связанный с условием. Если выражение оценивается как ложное, шаг или поток игнорируются.
Тип | Нить |
Родительский элемент(ы) | <Flow> <Step> |
Дочерний элемент(ы) | Никто |
Вы можете применить условие к конкретному шагу или ко всему потоку, в зависимости от того, поместите ли вы элемент в элемент <Flow>
или <Step>
:
// Condition can apply to just one step: // Or to the flow:<Flows>
<Flows>
<Flow>
<Flow>
<Step>
<Condition>
<Condition>
<Step>
<Name>
<Name>
... ... ... ... ... ... </Flows> </Flows>
Если условие внутри <Step>
оценивается как true, Edge выполняет этот шаг. Если условие оценивается как ложное, Edge пропускает этот шаг.
Если условие внутри <Flow>
оценивается как true, Edge обрабатывает все шаги потока. Если условие оценивается как ложное, Edge пропускает весь поток.
Синтаксис
Элемент <Condition>
использует следующий синтаксис:
<Condition>property operator "value"</Condition>
Где:
- property
- Свойство переменной потока, которое вы хотите использовать в своем условии. Например, переменная потока
request
имеет свойства с именамиpath
иcontent
. Чтобы использовать их в условии, вы указываете flow_variable [точка] property_name :request.path request.content
Полный список переменных потока и их свойств см. в разделе Справочник по переменным потока .
- operator
- Конструкция, определяющая способ оценки вашего состояния. Общие операторы включают в себя:
> greater than <= less than or equal to < less than >= greater than or equal to = equals && and != not equals || or ~~ JavaRegex ~ Matches /~ MatchesPath
Полный список см. в разделе «Операторы» справочника «Условия».
- " value "
- Значение, по которому оценивается свойство переменной потока. Обычно это базовый тип, например целое число или строка. Например, 200 или «/cat». Значение может включать подстановочные знаки, такие как звездочки и другие символы для сопоставления с образцом, как описано в разделе Сопоставление с условными выражениями по образцу .
Пример 1
В следующем примере проверяется, имеет ли свойство verb
переменной потока request
значение «GET»:
<!-- api-platform/reference/examples/flow-segments/condition-1.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> </PreFlow> ... </ProxyEndpoint>
Если запрос представляет собой запрос «GET», то в этом примере выполняется политика «Log-Request-OK».
Пример 2
В следующем примере проверяется код ответа:
<!-- api-platform/reference/examples/flow-segments/condition-2.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Response> <Step> <Condition>response.status.code LesserThanOrEquals 300</Condition> <Name>Log-Response-OK</Name> </Step> <Step> <Condition>response.status.code GreaterThan 300</Condition> <Name>Log-Response-NOT-OK</Name> </Step> </Response> </PreFlow> ... </ProxyEndpoint>
В зависимости от значения кода выполняется другая политика.
Атрибуты
Элемент <Condition>
не имеет атрибутов.
Дочерние элементы
Элемент <Condition>
не имеет дочерних элементов.
<Description>
Описывает поток в удобочитаемых терминах. Используйте этот элемент, чтобы предоставить информацию о потоке себе или другим разработчикам. Описание внешне не видно.
Тип | Нить |
Родительский элемент(ы) | <Flow> <PreFlow> <PostFlow> |
Дочерний элемент(ы) | Никто |
Синтаксис
Элемент <Description>
использует следующий синтаксис:
<Description>flow_description</Description>
Пример
В следующем примере показан элемент <Description>
, который определяет цель потока:
<!-- api-platform/reference/examples/flow-segments/description-1.xml --> <ProxyEndpoint name="default"> <Flows name="my-conditional-flows"> <Flow name="reports"> <Request> <Description>Based on the path suffix, determine which flow to use</Description> <Step> <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition> <Name>XML-to-JSON-1</Name> </Step> <Step> <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition> <Name>XML-to-JSON-1</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
Атрибуты
Элемент <Description>
не имеет атрибутов.
Дочерние элементы
Элемент <Description>
не имеет дочерних элементов.
<Flow>
Определяет пользовательский набор шагов, которые выполняет Edge.
Тип | Сложный объект |
Родительский элемент(ы) | <Flows> |
Дочерний элемент(ы) | <Condition> <Description> <Request> <Response> |
При желании вы можете указать <Condition>
в <Flow>
. В этом случае Edge выполняет шаги потока только в том случае, если условие оценивается как истинное. В противном случае Edge пропускает весь поток.
Элемент <Flows>
может содержать несколько элементов <Flow>
, каждый из которых имеет собственное условие и шаги. При наличии нескольких элементов <Flow>
Edge выполняет только первый из них, в котором нет условия или условие имеет значение true.
Вы можете определить поток по умолчанию, который будет выполняться всегда (если ни один из других условных потоков не выполняется). В зависимости от того, как настроен ваш API-прокси, это может быть полезным инструментом защиты от вредоносных атак .
Синтаксис
Элемент <Flow>
использует следующий синтаксис:
<Flow name="conditional_flow_name"> <Description>flow_description</Description> <Condition>property operator "value"</Condition> <Request> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Request> <Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response> </Flow>
Все дочерние элементы <Flow>
являются необязательными.
Пример 1
В следующем примере показан простой <Flow>
, который всегда выполняет политику «Log-Message-OK»:
<!-- api-platform/reference/examples/flow-segments/flow-1.xml --> <ProxyEndpoint name="default"> <Flows name="my-flow"> <Flow> <Request> <Step> <Name>Log-Message-OK</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
Пример 2
В следующем примере показан <Flow>
с несколькими шагами, каждый из которых имеет свое условие:
<!-- api-platform/reference/examples/flow-segments/flow-2.xml --> <ProxyEndpoint name="default"> <Flows name="my-conditional-flows"> <Flow name="reports"> <Request> <Description>Based on the path suffix, determine which flow to use</Description> <Step> <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition> <Name>XML-to-JSON-1</Name> </Step> <Step> <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition> <Name>Verify-Auth-1</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
Пример 3
В следующем примере показано несколько потоков в условном потоке:
<!-- api-platform/reference/examples/flow-segments/flows-2.xml --> <ProxyEndpoint name="default"> <Flows> <Flow name="my-flow-1"> <Response> <Step> <Condition>response.status.code = 200</Condition> <Name>Assign-Message-1</Name> </Step> </Response> </Flow> <Flow name="my-flow-2"> <Response> <Step> <Condition>response.status.code >= 400</Condition> <Name>Assign-Message-2</Name> </Step> </Response> </Flow> <Flow name="my-flow-3"> <Response> <Step> <Condition>response.status.code >= 300</Condition> <Name>Assign-Message-3</Name> </Step> </Response> </Flow> </Flows> ... </ProxyEndpoint>
Edge выполняет только один поток в сегменте; он выполняет первый поток, который не имеет условия или условие которого принимает значение true.
Атрибуты
В следующей таблице описаны атрибуты элемента <Flow>
:
Атрибут | Тип | Описание |
---|---|---|
name | Нить | (Обязательно) Уникальный идентификатор потока. Например, «Мой-условный-поток-1». Имя не может содержать пробелы или другие специальные символы. |
Дочерние элементы
В следующей таблице описаны дочерние элементы <Flow>
:
Дочерний элемент | Тип | Описание |
---|---|---|
<Condition> | Нить | Определяет условный оператор, который обрабатывается во время выполнения. Если выражение оценивается как истинное, то поток (и все его шаги) выполняются. Если выражение оценивается как ложное, то поток (и все его шаги) игнорируются. |
<Description> | Нить | Дает краткое описание потока. Это описание не видно снаружи. |
<Request> | Сложный объект | Определяет шаги и условия для сегмента запроса. |
<Response> | Сложный объект | Определяет шаги и условия для сегмента ответа. |
<Flows>
Содержит ноль или более элементов <Flow>
.
Тип | Сложный объект |
Родительский элемент(ы) | <ProxyEndpoint> <TargetEndpoint> |
Дочерний элемент(ы) | <Flow> |
Если внутри <Flows>
имеется несколько элементов <Flow>
, будет выполнен только один <Flow>
. Это будет первый поток, который либо не имеет <Condition>
, либо чье условие принимает значение true.
Вы можете определить поток по умолчанию, который будет выполняться всегда (если ни один из других потоков не выполняется). В зависимости от того, как настроен ваш API-прокси, это может быть полезным инструментом защиты от вредоносных атак .
Синтаксис
Элемент <Flows>
использует следующий синтаксис:
<Flows name="flow_name"> <Flow name="conditional_flow_name"> <Description>flow_description</Description> <Condition>property operator "value"</Condition> <Request> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Request> <Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response> </Flow> </Flows>
Все дочерние элементы <Flows>
являются необязательными.
Пример 1
В следующем примере показан простой элемент <Flows>
с одним <Flow>
:
<!-- api-platform/reference/examples/flow-segments/flows-1.xml --> <ProxyEndpoint name="default"> <Flows name="my-conditional-flows"> <Flow name="reports"> <Request> <Description>Based on the path suffix, determine which flow to use</Description> <Step> <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition> <Name>XML-to-JSON-1</Name> </Step> <Step> <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition> <Name>Verify-Auth-1</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
Edge выполняет одну из этих политик на основе суффикса пути, который он получает из переменной потока proxy
. Если суффикс пути не соответствует ни одному из условий, Edge не выполняет этот поток.
Пример 2
В следующем примере показано несколько элементов <Flow>
внутри <Flows>
, каждый из которых имеет свой собственный <Condition>
:
<!-- api-platform/reference/examples/flow-segments/flows-2.xml --> <ProxyEndpoint name="default"> <Flows> <Flow name="my-flow-1"> <Response> <Step> <Condition>response.status.code = 200</Condition> <Name>Assign-Message-1</Name> </Step> </Response> </Flow> <Flow name="my-flow-2"> <Response> <Step> <Condition>response.status.code >= 400</Condition> <Name>Assign-Message-2</Name> </Step> </Response> </Flow> <Flow name="my-flow-3"> <Response> <Step> <Condition>response.status.code >= 300</Condition> <Name>Assign-Message-3</Name> </Step> </Response> </Flow> </Flows> ... </ProxyEndpoint>
Edge выполняет только первый поток в сегменте, условие которого оценивается как true. После этого Edge пропускает оставшиеся потоки в сегменте.
Пример 3
В следующем примере показан <Flow>
«по умолчанию»:
<!-- api-platform/reference/examples/flow-segments/flows-3.xml --> <ProxyEndpoint name="default"> <Flows> <Flow name="my-conditional-flow-1"> <Response> <Step> <Condition>response.status.code = 200</Condition> <Name>Assign-Message-1</Name> </Step> </Response> </Flow> <Flow name="my-conditional-flow-2"> <Response> <Step> <Condition>response.header.someheader = "42"</Condition> <Name>Assign-Message-2</Name> </Step> </Response> </Flow> <Flow name="my-default-flow"> <Response> <Step> <Name>Assign-Message-3</Name> </Step> </Response> </Flow> </Flows> ... </ProxyEndpoint>
Edge выполняет только первый поток в сегменте, условие которого оценивается как true. Если ни один условный поток не выполняется, то выполняется третий поток в этом примере (без условий).
Поток по умолчанию может быть полезным инструментом защиты от вредоносных атак .
Атрибуты
Элемент <Flows>
не имеет атрибутов.
Дочерние элементы
Элемент <Flows>
имеет следующие дочерние элементы:
Дочерний элемент | Тип | Описание |
---|---|---|
<Flow> | Сложный объект | Поток, определяющий один возможный набор шагов в рамках условного потока. |
<Name>
Указывает идентификатор политики для выполнения в <Flow>
.
Тип | Нить |
Родительский элемент(ы) | <Step> |
Дочерний элемент(ы) | Никто |
Синтаксис
Элемент <Name>
использует следующий синтаксис:
<Name>policy_name</Name>
Пример
В следующем примере показаны две политики, которые добавляются в потоки по их имени:
<!-- api-platform/reference/examples/flow-segments/name-1.xml --> <ProxyEndpoint name="default"> <Flows name="my-conditional-flows"> <Flow name="reports"> <Request> <Description>Based on the path suffix, determine which flow to use</Description> <Step> <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition> <Name>XML-to-JSON-1</Name> </Step> <Step> <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition> <Name>Verify-Auth-1</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
Атрибуты
Элемент <Name>
не имеет атрибутов.
Дочерние элементы
Элемент <Name>
не имеет дочерних элементов.
<PostFlow>
Определяет шаги, которые необходимо предпринять в PostFlow запроса и ответа.
Тип | Сложный объект |
Родительский элемент(ы) | <ProxyEndpoint> <TargetEndpoint> |
Дочерний элемент(ы) | <Description> <Request> <Response> |
Элемент <PostFlow>
использует следующий синтаксис:
Синтаксис
<PostFlow name="flow_name"> <Description>flow_description</Description> <Request> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Request> <Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response> </PostFlow>
Пример
В следующем примере показан PostFlow с определенными шагами как для запроса, так и для ответа:
<!-- api-platform/reference/examples/flow-segments/postflow-1.xml --> <ProxyEndpoint name="default"> <PostFlow name="my-postflows"> <Description>My first PostFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> <Response> <Step> <Name>Set-Response-Headers</Name> </Step> </Response> </PostFlow> ... </ProxyEndpoint>
Атрибуты
В следующей таблице описаны атрибуты элемента <PostFlow>
:
Атрибут | Тип | Описание |
---|---|---|
name | Нить | Уникальный идентификатор потока (уникальный в пределах конечной точки). Например, «My-PostFlow-1». Значение не может содержать пробелы или другие специальные символы. |
Дочерние элементы
В следующей таблице описаны дочерние элементы <PostFlow>
:
Дочерний элемент | Тип | Описание |
---|---|---|
<Description> | Нить | Дает краткое описание потока. |
<Request> | Сложный объект | Определяет политики, которые будут выполняться во время PostFlow запроса. |
<Response> | Сложный объект | Определяет политики, которые будут выполняться во время PostFlow ответа. |
<PostClientFlow>
Определяет политики в ProxyEndpoint, которые выполняются только после возврата ответа клиенту. Эти политики обычно регистрируют сообщения, связанные с ответом.
Тип | Сложный объект |
Родительский элемент(ы) | <ProxyEndpoint> |
Дочерний элемент(ы) | <Description> <Response> |
Синтаксис
Элемент <PostClientFlow>
использует следующий синтаксис:
<PostClientFlow name="flow_name"> <Description>flow_description</Description> <Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response> </PostClientFlow>
Все дочерние элементы <PostClientFlow>
являются необязательными.
Пример
В следующем примере показан простой PostClientFlow, выполняющий одну политику:
<!-- api-platform/reference/examples/flow-segments/postclientflow-1.xml --> <ProxyEndpoint name="default"> <PostClientFlow name="my-postclientflows"> <Description>My first PostClientFlow. Processed after the response is sent back to the client.</Description> <Response> <Step> <Name>Message-Logging-OK</Name> </Step> </Response> </PostClientFlow> ... </ProxyEndpoint>
Атрибуты
В следующей таблице описаны атрибуты элемента <PostClientFlow>
:
Атрибут | Тип | Описание |
---|---|---|
name | Нить | Уникальный идентификатор потока. Имя не может содержать пробелы или другие специальные символы. Например, «My-PostClientFlow-1». |
Дочерние элементы
В следующей таблице описаны дочерние элементы <PostClientFlow>
:
Дочерний элемент | Тип | Описание |
---|---|---|
<Description> | Нить | Дает краткое описание потока. |
<Response> | Сложный объект | Определяет политики, которые будут выполняться во время PostFlow ответа. |
<PreFlow>
Определяет политики, которые будут выполняться в PreFlow запроса и ответа.
Тип | Сложный объект |
Родительский элемент(ы) | <ProxyEndpoint> <TargetEndpoint> |
Дочерний элемент(ы) | <Description> <Request> <Response> |
Синтаксис
Элемент <PreFlow>
использует следующий синтаксис:
<PreFlow name="flow_name"> <Description>flow_description</Description> <Request> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Request> <Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response> </PreFlow>
Все дочерние элементы <PreFlow>
являются необязательными.
Пример
В следующем примере показан PreFlow с определенным потоком запроса и ответа:
<!-- api-platform/reference/examples/flow-segments/preflow-1.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> <Response> <Step> <Condition>response.status.code LesserThanOrEquals 300</Condition> <Name>Log-Response-OK</Name> </Step> <Step> <Condition>response.status.code GreaterThan 300</Condition> <Name>Log-Response-NOT-OK</Name> </Step> </Response> </PreFlow> ... </ProxyEndpoint>
Атрибуты
В следующей таблице описаны атрибуты элемента <PreFlow>
:
Атрибут | Тип | Описание |
---|---|---|
name | Нить | Уникальный идентификатор потока. Имя не может содержать пробелы или другие специальные символы. Например, «My-PreFlow-1». |
Дочерние элементы
В следующей таблице описаны дочерние элементы <PreFlow>
:
Дочерний элемент | Тип | Описание |
---|---|---|
<Description> | Нить | Дает краткое описание потока. |
<Request> | Сложный объект | Определяет политики, которые будут выполняться во время PreFlow запроса. |
<Response> | Сложный объект | Определяет политики, которые будут выполняться во время PreFlow ответа. |
<Request>
Определяет политики, которые будут выполняться во время сегмента запроса потока.
Тип | Сложный объект |
Родительский элемент(ы) | <Flow> <PreFlow> <PostFlow> |
Дочерний элемент(ы) | <Condition> <Step> |
Синтаксис
Элемент <Request>
использует следующий синтаксис:
<Request> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Request>
Все дочерние элементы <Request>
являются необязательными.
Пример
В следующем примере показаны потоки, определенные для запроса как в PreFlow, так и в PostFlow:
<!-- api-platform/reference/examples/flow-segments/request-1.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> </PreFlow> <PostFlow name="my-postflows"> <Description>My first PostFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> </PostFlow> ... </ProxyEndpoint>
Атрибуты
Элемент <Request>
не имеет атрибутов.
Дочерние элементы
В следующей таблице описаны дочерние элементы <Request>
:
Дочерний элемент | Тип | Описание |
---|---|---|
<Condition> | Сложный объект | Определяет, выполняются ли шаги в сегменте запроса. |
<Step> | Нить | Указывает политику, которая будет выполняться в сегменте запроса. |
<Response>
Определяет политики, которые будут выполняться во время сегмента ответа потока.
Тип | Сложный объект |
Родительский элемент(ы) | <Flow> <PreFlow> <PostClientFlow> <PostFlow> |
Дочерний элемент(ы) | <Condition> <Step> |
Синтаксис
Элемент <Response>
использует следующий синтаксис:
<Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response>
Все дочерние элементы <Response>
являются необязательными.
Пример
В следующем примере показаны потоки, определенные для ответа как в PreFlow, так и в PostFlow:
<!-- api-platform/reference/examples/flow-segments/response-1.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Response> <Step> <Condition>response.status.code LesserThanOrEquals 300</Condition> <Name>Log-Response-OK</Name> </Step> <Step> <Condition>response.status.code GreaterThan 300</Condition> <Name>Log-Response-NOT-OK</Name> </Step> </Response> </PreFlow> <PostFlow name="my-postflows"> <Description>My first PostFlow</Description> <Response> <Step> <Name>Set-Response-Headers</Name> </Step> </Response> </PostFlow> ... </ProxyEndpoint>
Атрибуты
Элемент <Response>
не имеет атрибутов.
Дочерние элементы
В следующей таблице описаны дочерние элементы <Response>
:
Дочерний элемент | Тип | Описание |
---|---|---|
<Condition> | Нить | Определяет, выполняются ли шаги в сегменте ответа. |
<Step> | Нить | Указывает политику, которая будет выполняться в сегменте ответа. |
<Step>
Указывает политику для выполнения и (необязательно) условие, определяющее, следует ли выполнять эту политику.
Тип | Сложный объект |
Родительский элемент(ы) | <Request> <Response> |
Дочерний элемент(ы) | <Condition> <Name> |
В <Flow>
может быть определено несколько шагов, и шаги выполняются в том порядке, в котором они определены в XML потока.
Шаги без условия выполняются всегда. Шаги с условием выполняются только в том случае, если условие истинно. Если условие оценивается как ложное, Edge пропускает этот шаг.
Синтаксис
Элемент <Step>
использует следующий синтаксис:
<Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step>
Для каждого <Step>
может быть только одно <Condition>
и одно <Name>
, но в <Flow>
может быть несколько шагов.
Все дочерние элементы <Step>
являются необязательными.
Пример 1
В следующем примере показан один шаг с условием и один шаг без условия:
<!-- api-platform/reference/examples/flow-segments/step-1.xml --> <ProxyEndpoint name="default"> <PostFlow name="my-postflows"> <Description>My first PostFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> <Response> <Step> <Name>Set-Response-Headers</Name> </Step> </Response> </PostFlow> ... </ProxyEndpoint>
Шаг без условия будет выполняться каждый раз в течение сегмента запроса. Шаг с условием будет выполнен только в том случае, если запрос является «GET» во время сегмента ответа.
Пример 2
В следующем примере показано несколько шагов в одном сегменте:
<!-- api-platform/reference/examples/flow-segments/step-2.xml --> <ProxyEndpoint name="default"> <PostFlow name="PostFlow"> <Response> <Step> <Name>Assign-Message-1</Name> </Step> <Step> <Name>Assign-Message-2</Name> </Step> </Response> </PostFlow> ... </ProxyEndpoint>
Шаги без условия выполняются всегда.
Атрибуты
Элемент <Step>
не имеет атрибутов.
Дочерние элементы
В следующей таблице описаны дочерние элементы <Step>
:
Дочерний элемент | Тип | Описание |
---|---|---|
<Condition> | Нить | Определяет условный оператор для шага, который обрабатывается во время выполнения. Если выражение оценивается как true, Edge выполняет этот шаг. Если выражение оценивается как ложное, Edge пропускает этот шаг. |
<Name> | Нить | Указывает идентификатор политики, которая будет выполняться в текущем потоке. |