조건부 흐름

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

조건부 흐름에서는 항상 실행되는 PrePre 또는 PostFlow에 연결된 정책과 달리 흐름의 조건이 true로 평가되는 경우에만 정책이 실행됩니다. 이 섹션에서는 조건부 흐름을 만드는 방법을 설명합니다.

조건부 흐름 정보

요청과 응답을 처리하는 동안 세그먼트별로 하나의 조건부 흐름(조건이 true로 평가된 첫 번째 흐름)만 실행됩니다.

다음 예시에서는 조건부 흐름을 사용하는 몇 가지 방법을 보여줍니다.

예시 1

다음 ProxyEndpoint 정의는 API 프록시에 대한 모든 HTTP GET 요청에서 ProxyEndpoint가 실행하는 조건부 흐름을 보여줍니다.

<ProxyEndpoint name="default">
  <PreFlow>
    <Request/>
    <Response/>
  </PreFlow>
  <Flows>
    <Flow name="Flow-1">
      <Condition>request.verb="GET"</Condition>
      <Request/>
      <Response/>
    </Flow>
  </Flows>
  <PostFlow>
    <Request/>
    <Response/>
  </PostFlow>
  ...
</ProxyEndpoint>

조건은 request.verb 흐름 변수를 참조합니다. 흐름 변수는 Apigee에서 처리하는 API 트랜잭션과 관련된 상태 정보를 포함하는 이름이 지정된 참조입니다. Apigee는 참조할 수 있는 여러 상태 변수를 정의합니다.

예 2

서비스 백엔드가 날씨 보고서와 날씨 예측을 제공하는 경우 API가 이러한 API 리소스에 매핑되는 두 개의 조건부 흐름(/reports/forecasts)을 정의할 수 있습니다. API 호출의 URL에 이러한 리소스 중 하나가 포함되면 조건이 true로 평가되고 조건부 흐름에 연결된 로직이 실행됩니다.

그러면 앱 개발자가 다음 형식의 URL에 요청을 보내 리소스에 액세스합니다.

http://myAPIs.myCo.com/weather/reports

또는

http://myAPIs.myCo.com/weather/forecasts

API 프록시에서 특정 리소스에 해당하는 조건부 흐름을 정의할 수 있습니다.

<ProxyEndpoint name="default">
  <PreFlow>
    <Request/>
    <Response/>
  </PreFlow>
  <Flows>
    <Flow name="Flow-1">
      <Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition>
      <Request/>
      <Response/>
    </Flow>
    <Flow name="Flow-2">
      <Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition>
      <Request/>
      <Response/>
    </Flow>
  </Flows>
  <PostFlow>
    <Request/>
    <Response/>
  </PostFlow>
  ...
</ProxyEndpoint>

이 예시에서는 API 프록시에 액세스하는 데 사용되는 URL의 서픽스 부분이 포함된 proxy.pathsuffix 흐름 변수를 참조합니다. 그런 다음 각 리소스의 조건부 흐름에 서로 다른 정책을 연결할 수 있습니다.

예시: 조건부 흐름 만들기

다음 예시는 다음과 같습니다.

  • 요청 메시지가 HTTP GET일 때만 실행되는 조건부 흐름을 만듭니다.
  • 새 흐름에 정책을 추가합니다.

조건부 흐름 추가

조건부 흐름을 추가하려면 다음 안내를 따르세요.

  1. 프록시 편집기에서 개발 탭을 선택합니다.
  2. 왼쪽 창에서 프록시 엔드포인트 > 기본값을 선택합니다.

    왼쪽 창에서 프록시 엔드포인트 > 기본값을 선택합니다.

    참고: 모든 요소를 보려면 오른쪽 창에서 비주얼 편집기를 확장해야 할 수도 있습니다. 이렇게 하려면 비주얼 편집기와 텍스트 편집기 사이의 구분선을 클릭하고 약간 아래로 드래그합니다.

  3. 응답 창 위에 있는 + 버튼을 클릭합니다.

    조건부 흐름 추가 버튼

  4. 조건부 흐름 추가 대화상자에서 경로 및 동사를 선택하고 요청 경로에 대해 원하는 경로 서픽스를 경로 필드에 입력하여 조건부 흐름이 실행될 수 있도록 합니다. 위의 예시 2를 참조하세요.

    조건부 흐름 추가 버튼

    조건부 흐름은 요청이 GET 요청(PUT, POST 등이 아님)인 경우에만 실행됩니다.

    이제 Flow-1이라는 새 흐름이 프록시 엔드포인트 창에 표시됩니다.

    프록시 엔드포인트에 표시되는 조건부 흐름

  5. 새 조건부 흐름의 XML 코드가 텍스트 편집기에 표시됩니다.

    프록시 엔드포인트에 표시되는 조건부 흐름

원하는 경우 조건 요소를 수정할 수 있습니다. 흐름에 로직 추가를 참조하세요.

흐름에 정책 연결

이제 조건부 흐름을 만들었으므로 여기에 정책을 연결할 수 있습니다. 다음 예시에서는 API 프록시에서 일정 기간 동안 허용하는 요청 메시지 수를 흐름에 제한하는 할당량 정책을 추가합니다.

  1. 왼쪽 창에서 정책 오른쪽에 있는 + 버튼을 클릭합니다.
  2. 정책 만들기 대화상자에서 정책 유형 선택 필드를 클릭하고 트래픽 관리로 스크롤하고 Quota를 선택합니다.
  3. 만들기를 클릭하여 정책을 만듭니다.
  4. 요청 창에서 Flow-1 옆에 있는 + 버튼을 클릭합니다.

    요청 창에서 Flow-1 옆에 있는 더하기 버튼을 클릭합니다.

  5. 정책 단계 추가 대화상자에서 기존 정책 선택 필드를 클릭하고 Quota-1을 선택합니다.
  6. 추가를 클릭합니다.

요청 창에 흐름 및 연결된 정책 Quota-1이 표시됩니다.

새 흐름 및 할당량 정책을 보여주는 요청 창

이제 텍스트 편집기에 XML의 Quota-1 요소에 Quota-1 정책이 포함된 단계가 표시됩니다.

XML로 표시된 조건부 흐름 및 할당량 정책

이 구성을 사용하면 GET 요청에 할당량 정책이 적용됩니다. 다른 유형의 요청은 할당량 정책의 최대 요청 수에 영향을 미치지 않습니다.

조건부 흐름을 추가하려면 API 프록시 빌더에서 개발 탭을 선택합니다.

프록시 빌더 개발 탭

원하는 엔드포인트에서 를 클릭합니다.

조건부 흐름 추가 버튼

새 조건부 흐름 양식을 사용하면 흐름의 이름을 지정하고 조건을 구성할 수 있습니다. 다음 예시에서는 기본 경로 후의 아무 URI에서 GET 동사(PUT, POST 등과 대비하여)에 대한 요청 메시지의 HTTP를 평가하는 간단한 조건을 추가합니다.

새 조건부 흐름 창에서 흐름 이름은 Flow-1으로 지정되었으며 흐름의 조건 유형, 경로, 동사를 구성합니다.

(흐름 변수가 있는 조건에서 조건문을 구성하는 방법 알아보기)

이제 Flow-1이라는 새 흐름이 탐색 메뉴에 표시됩니다.

Flow-1 강조 표시됨

이제 ProxyEndpoint의 XML 구성을 살펴봅시다. Flow-1 메뉴에서 Flow-1을 선택하세요.

다음 구성이 표시됩니다.

<PreFlow name="PreFlow">
    <Request/>
    <Response/>
</PreFlow>
<Flows>
  <Flow name="Flow-1">
    <Request/>
    <Response/>
    <Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
  </Flow>
</Flows>
<PostFlow name="PostFlow">
  <Request/>
  <Response/>
</PostFlow>

조건부 흐름을 만들면 정책 연결에 사용할 수 있습니다. 흐름을 선택한 후 요청 또는 응답 다이어그램의 + 단계 아이콘을 클릭하여 흐름에 새 정책 또는 기존 정책을 추가합니다.

탐색기 메뉴에서는 issue라는 이름의 조건부 흐름 예시가 강조 표시되어 있고, Flows 창에 Step 버튼이 표시되어 있습니다.

단계 추가(Add Step) 창에서는 할당량(Quota와) 정책 유형과 표시 이름 Quota-2의 새 정책 인스턴스가 생성됩니다.

선택한 흐름에 정책을 연결하면 해당 흐름 URI 및 동사의 조합으로 전송되는 요청에만 할당량 정책이 적용되도록 API 프록시를 구성할 수 있습니다. 예를 들어 요청의 learn 흐름에 정책을 연결하면 텍스트 편집기에 다음 XML이 생성됩니다.

<ProxyEndpoint name="default">
...
   <Flow name="issue">
        <Description/>
        <Request>
            <Step>
                <Name>Quota-2</Name>
            </Step>
        </Request>
        <Response/>
        <Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition>
    </Flow>
...
</ProxyEndpoint>

이 구성에서 GET 요청이 ../issue/** URI 패턴(/issue/에서 마지막 슬래시 다음에 URI의 아무 내용이 패턴)을 가진 API 프록시에 들어오는 경우 할당량이 해당 API 호출에 적용됩니다.

다음 단계

다음 주제에서는 조건 구성 및 변수 사용에 대해 자세히 설명합니다.