흐름 구성 참조

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

이 섹션에서는 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, Conditional Flow, 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[점]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>을 선택적으로 지정할 수 있습니다. 이 경우 Edge는 조건이 true로 평가되는 경우에만 흐름의 단계를 실행합니다. 그렇지 않으면 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

다음 예시에서는 Conditional Flow의 여러 흐름을 보여줍니다.

<!-- 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 문자열 (필수) 흐름의 고유 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

다음 예시에서는 단일 <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> 내에 각각 고유한 <Condition>이 포함된 여러 <Flow> 요소를 보여줍니다.

<!-- 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> 복합 객체 Conditional 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 중에 실행할 정책을 정의합니다.

<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>
하위 요소 <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>

<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가 단계를 실행합니다. 문이 false로 평가되면 Edge는 단계를 건너뜁니다.
<Name> 문자열 현재 흐름에서 실행할 정책의 ID를 지정합니다.