이 페이지는 Apigee 및 Apigee 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
일 때만 실행되는 조건부 흐름을 만듭니다. - 새 흐름에 정책을 추가합니다.
조건부 흐름 추가
조건부 흐름을 추가하려면 다음 안내를 따르세요.
- 프록시 편집기에서 개발 탭을 선택합니다.
- 왼쪽 창에서 프록시 엔드포인트 > 기본값을 선택합니다.
참고: 모든 요소를 보려면 오른쪽 창에서 비주얼 편집기를 확장해야 할 수도 있습니다. 이렇게 하려면 비주얼 편집기와 텍스트 편집기 사이의 구분선을 클릭하고 약간 아래로 드래그합니다.
- 응답 창 위에 있는 + 버튼을 클릭합니다.
- 조건부 흐름 추가 대화상자에서 경로 및 동사를 선택하고 요청 경로에 대해 원하는 경로 서픽스를 경로 필드에 입력하여 조건부 흐름이 실행될 수 있도록 합니다. 위의 예시 2를 참조하세요.
조건부 흐름은 요청이
GET
요청(PUT
,POST
등이 아님)인 경우에만 실행됩니다.이제
Flow-1
이라는 새 흐름이 프록시 엔드포인트 창에 표시됩니다. 새 조건부 흐름의 XML 코드가 텍스트 편집기에 표시됩니다.
원하는 경우 조건 요소를 수정할 수 있습니다. 흐름에 로직 추가를 참조하세요.
흐름에 정책 연결
이제 조건부 흐름을 만들었으므로 여기에 정책을 연결할 수 있습니다. 다음 예시에서는 API 프록시에서 일정 기간 동안 허용하는 요청 메시지 수를 흐름에 제한하는 할당량 정책을 추가합니다.
- 왼쪽 창에서 정책 오른쪽에 있는 + 버튼을 클릭합니다.
- 정책 만들기 대화상자에서 정책 유형 선택 필드를 클릭하고 트래픽 관리로 스크롤하고 Quota를 선택합니다.
- 만들기를 클릭하여 정책을 만듭니다.
- 요청 창에서 Flow-1 옆에 있는 + 버튼을 클릭합니다.
- 정책 단계 추가 대화상자에서 기존 정책 선택 필드를 클릭하고 Quota-1을 선택합니다.
- 추가를 클릭합니다.
요청 창에 흐름 및 연결된 정책 Quota-1이 표시됩니다.
이제 텍스트 편집기에 XML의 Quota-1 요소에 Quota-1 정책이 포함된 단계가 표시됩니다.
이 구성을 사용하면 GET
요청에 할당량 정책이 적용됩니다.
다른 유형의 요청은 할당량 정책의 최대 요청 수에 영향을 미치지 않습니다.
조건부 흐름을 추가하려면 API 프록시 빌더에서 개발 탭을 선택합니다.
원하는 엔드포인트에서 를 클릭합니다.
새 조건부 흐름 양식을 사용하면 흐름의 이름을 지정하고 조건을 구성할 수 있습니다. 다음 예시에서는 기본 경로 후의 아무 URI에서 GET
동사(PUT
, POST
등과 대비하여)에 대한 요청 메시지의 HTTP를 평가하는 간단한 조건을 추가합니다.
(흐름 변수가 있는 조건에서 조건문을 구성하는 방법 알아보기)
이제 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>
조건부 흐름을 만들면 정책 연결에 사용할 수 있습니다. 흐름을 선택한 후 요청 또는 응답 다이어그램의 + 단계 아이콘을 클릭하여 흐름에 새 정책 또는 기존 정책을 추가합니다.
선택한 흐름에 정책을 연결하면 해당 흐름 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 호출에 적용됩니다.
다음 단계
다음 주제에서는 조건 구성 및 변수 사용에 대해 자세히 설명합니다.