本页面适用于 Apigee 和 Apigee Hybrid。
查看 Apigee Edge 文档。
本部分提供有关用于定义 API 代理流的 XML 元素的参考信息。
层次结构和语法
以下示例展示了流配置元素的元素层次结构和语法:
元素层次结构
以下示例展示了 <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>
EventFlow
<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、EventFlow 和 PostClientFlow 执行。
<Condition>
定义在运行时处理的语句。如果语句的计算结果为 true,则系统会执行与条件关联的步骤或流程。如果语句的计算结果为 false,则系统会忽略步骤或流程。
| 类型 | 字符串 |
| 父 元素 |
<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,则 Apigee 会执行该步骤。如果条件计算结果为 false,则 Apigee 会跳过此步骤。
如果 <Flow> 中的条件计算结果为 true,则 Apigee 会处理流程中的所有步骤。如果条件计算结果为 false,则 Apigee 会跳过整个流程。
语法
<Condition> 元素使用以下语法:
<Condition>property operator "value"</Condition>
其中:
- property
- 要在条件中使用的流变量属性。例如,
request流变量具有名为path和content的属性。要在条件中使用它们,您需要指定 flow_variable[dot]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
以下示例检查 request 流变量的 verb 属性是否为 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>
定义 Apigee 执行的一组自定义步骤。
| 类型 | 复杂对象 |
| 父 元素 |
<Flows> |
| 子 元素 |
<Condition><Description><Request><Response> |
您可以选择在 <Flow> 上指定 <Condition>。在这种情况下,Apigee 仅在条件计算为 true 时执行流程中的步骤。否则,Apigee 会跳过整个流程。
<Flows> 元素可以包含多个 <Flow> 元素,每个元素都有自己的条件和步骤。当有多个 <Flow> 元素时,Apigee 只会执行第一个没有条件或条件计算为 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>
Apigee 在细分中只执行一次流;它将执行第一个没有条件或条件被解析为 true 的流。
属性
下表说明了 <Flow> 元素的属性:
| 属性 | 类型 | 说明 |
|---|---|---|
name |
字符串 | (必需) 流程的唯一 ID。例如 My-Conditional-Flow-1。名称不得包含空格或其他特殊字符。 |
子元素
下表介绍了 <Flow> 的子元素:
| 子元素 | 类型 | 说明 |
|---|---|---|
<Condition> |
字符串 | 定义在运行时处理的条件语句。如果语句的计算结果为 true,则执行流(及其所有步骤)。如果语句的计算结果为 false,则忽略流程(及其所有步骤)。 |
<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>
Apigee 会根据它从 proxy 流变量中收集的路径后缀执行其中一项政策。如果路径后缀与上述两个条件都不匹配,则 Apigee 不会执行此流程。
示例 2
以下示例展示了 <Flows> 中的多个 <Flow> 元素,每个元素都有自己的 <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>
Apigee 仅对细分条件评估为 true 的执行第一个流。然后,Apigee 会跳过细分中的剩余流。
示例 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>
Apigee 仅对细分条件评估为 true 的执行第一个流。如果没有条件执行流,则本示例中的第三个流(无条件)执行。
默认流是一种有用的防范恶意攻击工具。
属性
<Flows> 元素没有属性。
子元素
<Flows> 元素具有以下子元素:
| 子元素 | 类型 | 说明 |
|---|---|---|
<Flow> |
复杂对象 | 在条件流中定义一组可能步骤的流程。 |
<Name>
指定要在 <Flow> 中执行的政策的 ID。
| 类型 | 字符串 |
| 父 元素 |
<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 |
字符串 | 流程的唯一 ID(在端点内唯一)。例如 My-PostFlow-1。名称不得包含空格或其他特殊字符。 |
子元素
下表介绍了 <PostFlow> 的子元素:
| 子元素 | 类型 | 说明 |
|---|---|---|
<Description> |
字符串 | 提供流程的简要说明。 |
<Request> |
复杂 对象 | 定义在请求的 PostFlow 期间要执行的政策。 |
<Response> |
复杂对象 | 定义在响应的 PostFlow 期间要执行的政策。 |
<EventFlow>
定义在 EventFlow 中执行的步骤。EventFlow 可用来支持流式传输服务器发送的事件。如需了解详情,请参阅流式传输服务器发送的事件。
| 类型 | 复杂对象 |
| 父 元素 |
<TargetEndpoint> |
| 子 元素 |
<Description><Response> |
EventFlow 元素使用以下语法:
语法
<EventFlow name="flow_name" content-type="text/event-stream">> <Description>flow_description</Description> <Response> <Step> <Name>policy_name</Name> </Step> </Response> </EventFlow>
示例
以下示例展示了一个 EventFlow:
<TargetEndpoint name="default"> <EventFlow name="EF-1" content-type="text/event-stream"> <Response> <Step> <Name>Raise-Fault-Cred-Invalid</Name> <Condition>fault.name equals "invalid_access_token"</Condition> </Step> </Response> </EventFlow> <HTTPTargetConnection> </TargetEndpoint></pre>
属性
下表列出了 EventFlow 元素的属性:
| 属性 | 类型 | 说明 |
|---|---|---|
name |
字符串 | 流程的唯一 ID(在端点内唯一)。例如 My-EventFlow-1。名称不得包含空格或其他特殊字符。 |
content-type |
字符串 | (必需)必须设置为 content-type="text/event-stream"。 |
子元素
下表列出了 EventFlow 的子元素:
| 子元素 | 类型 | 说明 |
|---|---|---|
<Description> |
字符串 | 提供流程的简要说明。 |
<Response> |
复杂对象 | 定义在响应的 EventFlow 期间要执行的政策。 |
<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 |
字符串 | 流程的唯一 ID。名称不得包含空格或其他特殊字符。例如 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 |
字符串 | 流程的唯一 ID。名称不得包含空格或其他特殊字符。例如 My-PreFlow-1。 |
子元素
下表介绍了 <PreFlow> 的子元素:
| 子元素 | 类型 | 说明 |
|---|---|---|
<Description> |
字符串 | 提供流程的简要说明。 |
<Request> |
复杂 对象 | 定义在请求的 PreFlow 期间要执行的政策。 |
<Response> |
复杂对象 | 定义在响应的 PreFlow 期间要执行的政策。 |
<Request>
定义在流的请求细分期间执行的政策。
| 类型 | 复杂对象 |
| 父 元素 |
<Flow><PreFlow><PostFlow> |
| 子 元素 |
<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> 的子元素:
| 子元素 | 类型 | 说明 |
|---|---|---|
<Step> |
字符串 | 指定要在请求细分中执行的政策。 此类子元素可以多次出现。 |
<Response>
定义在流的响应细分期间执行的政策。
| 类型 | 复杂对象 |
| 父 元素 |
<Flow><PreFlow><PostClientFlow><PostFlow> |
| 子 元素 |
<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> 的子元素:
| 子元素 | 类型 | 说明 |
|---|---|---|
<Step> |
字符串 | 指定要在响应细分中执行的政策。 此类子元素可以多次出现。 |
<Step>
指定要执行的政策以及(可选)确定执行该政策的条件。
| 类型 | 复杂对象 |
| 父 元素 |
<Request><Response> |
| 子 元素 |
<Condition><Name> |
您可以在 <Flow> 中定义多个步骤,并且执行这些步骤的顺序都是在流的 XML 中定义的。
不执行条件的步骤始终执行。包含条件的步骤仅在条件计算结果为 true 时执行。如果条件计算结果为 false,则 Apigee 会跳过此步骤。
语法
<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,则 Apigee 会执行此步骤。如果语句的计算结果为 false,则 Apigee 会跳过此步骤。 |
<Name> |
字符串 | 指定要在当前流中执行的政策的 ID。 |