이 페이지는 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 호출에 적용됩니다.
다음 단계
다음 주제에서는 조건 구성 및 변수 사용에 대해 자세히 설명합니다.