フロー構成のリファレンス

このセクションでは、API プロキシフローの定義で使用する XML 要素のリファレンス情報を提供します。

階層と構文

次の例は、フロー構成要素の要素階層と構文を示しています。

要素の階層

次の例は、<ProxyEndpoint> 要素と <TargetEndpoint> 要素内のフロー構成要素の階層を表しています。

<ProxyEndpoint | TargetEndpoint>
        subdirectory_arrow_right<PreFlow>
              subdirectory_arrow_right<Request>
                    subdirectory_arrow_right<Step>
                        subdirectory_arrow_right<Condition>
                        subdirectory_arrow_right<Name>
              subdirectory_arrow_right<Response>
                    subdirectory_arrow_right<Step>
                        subdirectory_arrow_right<Condition>
                        subdirectory_arrow_right<Name>
              subdirectory_arrow_right<Description>
        subdirectory_arrow_right<Flows>
              subdirectory_arrow_right<Flow>
                    subdirectory_arrow_right<Description>
                    subdirectory_arrow_right<Condition>
                    subdirectory_arrow_right<Request>
                          subdirectory_arrow_right<Step>
                              subdirectory_arrow_rightmore_horiz
                    subdirectory_arrow_right<Response>
                          subdirectory_arrow_right<Step>
                              subdirectory_arrow_rightmore_horiz
              subdirectory_arrow_right<Description>
        subdirectory_arrow_right<PostFlow>
              subdirectory_arrow_right<Request>
                    subdirectory_arrow_right<Step>
                        subdirectory_arrow_rightmore_horiz
              subdirectory_arrow_right<Response>
                    subdirectory_arrow_right<Step>
                        subdirectory_arrow_rightmore_horiz
              subdirectory_arrow_right<Description>
        subdirectory_arrow_right<PostClientFlow> (<ProxyEndpoint> only)
              subdirectory_arrow_right<Response>
                    subdirectory_arrow_rightmore_horiz
              subdirectory_arrow_right<Description>

        more_horiz  // 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>

ここで:

property
条件で使用するフロー変数のプロパティ。たとえば、request フロー変数には、pathcontent という名前のプロパティがあります。これらを条件として使用するには、次のように 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>

Edge が実行するステップのカスタムセットを定義します。

複合オブジェクト
親要素 <Flows>
子要素 <Condition>
<Description>
<Request>
<Response>

必要に応じて、<Flow><Condition> を指定することもできます。指定すると、条件が true と評価された場合にのみ 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

次の例は、"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> 要素がある場合、いずれかの <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

次の例は、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>

クライアントにレスポンスが返された後に 1 回だけ実行される 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>

1 つの <Step> で使用できる <Condition><Name> はそれぞれ 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 を指定します。