このセクションでは、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>
<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、条件付きフロー、PostFlow、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 と評価された場合、Edge によってそのステップが実行されます。条件が false と評価された場合、Edge によってそのステップがスキップされます。
<Flow>
内の条件が true と評価された場合、Edge によってフロー内のすべてのステップが処理されます。条件が false と評価された場合、Edge によってフロー全体がスキップされます。
構文
<Condition>
要素の構文は次のとおりです。
<Condition>property operator "value"</Condition>
ここで
- プロパティ
- 条件で使用するフロー変数のプロパティ。たとえば、
request
フロー変数には、path
とcontent
という名前のプロパティがあります。これらを条件として使用するには、次のように flow_variable[dot]property_name の形式で指定します。request.path request.content
フロー変数とそのプロパティの完全なリストについては、フロー変数のリファレンスをご覧ください。
- 演算子
- 条件の評価方法を定義する演算子。よく利用される演算子は次のとおりです。
> 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>
Edge が実行するステップのカスタムセットを定義します。
型 | 複合オブジェクト |
親要素 | <Flows> |
子要素 | <Condition> <Description> <Request> <Response> |
必要に応じて、<Flow>
に <Condition>
を指定できます。指定すると、条件が true と評価された場合のみ、Edge によってフロー内のステップが実行されます。それ以外の場合、Edge はフロー全体をスキップします。
<Flows>
要素には、複数の <Flow>
要素を含めることが可能です。それぞれに、独自の条件とステップを指定できます。複数の <Flow>
要素が含まれている場合、条件がない、または条件が 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
次の例は、常に「Log-Message-OK」ポリシーを実行する、シンプルな <Flow>
を示しています。
<!-- 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 によって、セグメント内のフローが 1 つだけ実行されます。条件がない最初のフロー、または条件が true と評価された最初のフローが実行されます。
属性
次の表に、<Flow>
要素の属性を示します。
属性 | 型 | 説明 |
---|---|---|
name |
文字列 | (必須)フローの一意の ID。たとえば、"My-Conditional-Flow-1" です。名前にスペースや特殊文字を使用することはできません。 |
子要素
次の表に、<Flow>
の子要素を示します。
子要素 | 型 | 説明 |
---|---|---|
<Condition> |
文字列 | ランタイムに処理される条件文を定義します。ステートメントが true と評価された場合、フロー(フロー内のすべてのステップ)が実行されます。ステートメントが false と評価された場合、フロー(フロー内のすべてのステップ)は無視されます。 |
<Description> |
文字列 | フローの簡単な説明を記述します。この説明は外部からは参照できません。 |
<Request> |
複合オブジェクト | リクエスト セグメントのステップと条件を指定します。 |
<Response> |
複合オブジェクト | レスポンス セグメントのステップと条件を指定します。 |
<Flows>
0 個以上の <Flow>
要素が含まれます。
型 | 複合オブジェクト |
親要素 | <ProxyEndpoint> <TargetEndpoint> |
子要素 | <Flow> |
<Flows>
内に複数の <Flow>
要素がある場合は、1 つの <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
次の例は、単一の <Flow>
を持つ単純な <Flows>
要素を示しています。
<!-- 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
次の例は、<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>
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 と評価された最初のフローを実行します。実行する条件付きフローがない場合、この例の 3 番目のフロー(条件なしのフロー)が実行されます。
デフォルト フローは、悪意のある攻撃から保護するために有用な方法になります。
属性
<Flows>
要素には属性はありません。
子要素
<Flows>
要素には次の子要素があります。
子要素 | 型 | 説明 |
---|---|---|
<Flow> |
複合オブジェクト | 条件付きフロー内で実行可能な一連のステップを定義するフロー。 |
<Name>
<Flow>
内で実行されるポリシーの ID を指定します。
型 | 文字列 |
親要素 | <Step> |
子要素 | なし |
構文
<Name>
要素の構文は次のとおりです。
<Name>policy_name</Name>
例
次の例では、2 つのポリシーがその名前でフローに追加されています。
<!-- 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。セグメント内で一意の ID を指定します(たとえば、"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>
のすべての子要素は省略可能です。
例
次の例は、1 つのポリシーを実行する単純な 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> |
子要素 | <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 で定義されている順番で実行されます。
条件なしのステップは常に実行されます。条件付きのステップは、条件が true と評価された場合にのみ実行されます。条件が false と評価された場合、Edge はステップをスキップします。
構文
<Step>
要素の構文は次のとおりです。
<Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step>
<Condition>
と <Name>
はそれぞれ <Step>
あたり 1 つ指定できますが、<Flow>
には複数のステップを指定できます。
<Step>
のすべての子要素は省略可能です。
例 1
次の例には、条件付きのステップが 1 つ、条件なしのステップが 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
次の例では、1 つのセグメント内に複数のステップが定義されています。
<!-- 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 はステップを実行します。ステートメントが false の場合、Edge はステップをスキップします。 |
<Name> |
文字列 | 現在のフローで実行されるポリシーの ID を指定します。 |