이 페이지는 Apigee 및 Apigee Hybrid에 적용됩니다.
Apigee Edge 문서 보기
이 섹션에서는 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>
EventFlow
<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, EventFlow, 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로 평가되면 Apigee가 해당 단계를 실행합니다. 조건이 false로 평가되면 Apigee가 단계를 건너뜁니다.
<Flow> 내의 조건이 true로 평가되면 Apigee가 흐름의 모든 단계를 처리합니다. 조건이 false로 평가되면 Apigee가 전체 흐름을 건너뜁니다.
구문
<Condition> 요소는 다음 구문을 사용합니다.
<Condition>property operator "value"</Condition>
각 항목의 의미는 다음과 같습니다.
- property
- 조건에서 사용할 흐름 변수 속성입니다. 예를 들어
request흐름 변수에는path및content라는 속성이 있습니다. 조건에서 사용하려면 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>
Apigee가 실행하는 커스텀 단계를 정의합니다.
| 유형 | 복합 객체 |
| 상위 요소 |
<Flows> |
| 하위 요소 |
<Condition><Description><Request><Response> |
<Flow>에 <Condition>을 선택적으로 지정할 수 있습니다. 이 경우 Apigee는 조건이 true로 평가되는 경우에만 흐름의 단계를 실행합니다. 그렇지 않으면 Apigee는 전체 흐름을 건너뜁니다.
<Flows> 요소에는 각각 고유한 조건 및 단계가 있는 여러 <Flow> 요소가 포함될 수 있습니다. <Flow> 요소가 여러 개인 경우 Apigee는 조건이 없거나 조건이 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>
Apigee는 세그먼트에서 하나의 흐름만 실행하며, 조건이 없는 경우 또는 조건이 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>
Apigee는 proxy 흐름 변수에서 수집한 경로 서픽스를 기반으로 이러한 정책 중 하나를 실행합니다. 경로 서픽스와 조건이 하나도 일치하지 않는 경우 Apigee는 이 흐름을 실행하지 않습니다.
예시 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>
Apigee는 조건이 true로 평가되는 세그먼트의 첫 번째 흐름만 실행합니다. 그런 다음 Apigee는 세그먼트의 나머지 흐름을 건너뜁니다.
예시 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>
Apigee는 조건이 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 중에 실행할 정책을 정의합니다. |
<EventFlow>
EventFlow에서 수행할 단계를 정의합니다. EventFlow는 서버 전송 이벤트 스트리밍을 지원하는 데 사용됩니다. 자세한 내용은 서버 전송 이벤트 스트리밍을 참조하세요.
| 유형 | 복합 객체 |
| 상위 요소 |
<TargetEndpoint> |
| 하위 요소 |
<Description><Response> |
EventFlow 요소는 다음 구문을 사용합니다.
구문
<EventFlow name="flow_name" content-type="text/event-stream">> <Description>flow_description</Description> <Response> <Step> <Name>policy_name</Name> </Step> </Response> </EventFlow>
예
다음 예시는 EventFlow를 보여줍니다.
<TargetEndpoint name="default"> <EventFlow name="EF-1" content-type="text/event-stream"> <Response> <Step> <Name>Raise-Fault-Cred-Invalid</Name> <Condition>fault.name equals "invalid_access_token"</Condition> </Step> </Response> </EventFlow> <HTTPTargetConnection> </TargetEndpoint></pre>
속성
다음 표에서는 EventFlow 요소 속성을 설명합니다.
| 속성 | 유형 | 설명 |
|---|---|---|
name |
문자열 | 엔드포인트 내에서 고유한 흐름의 고유 ID입니다. 예를 들면 My-EventFlow-1입니다. 값은 공백 또는 기타 특수문자를 포함할 수 없습니다. |
content-type |
문자열 | (필수) content-type="text/event-stream"으로 설정해야 합니다. |
하위 요소
다음 표에서는 EventFlow의 하위 요소를 설명합니다.
| 하위 요소 | 유형 | 설명 |
|---|---|---|
<Description> |
문자열 | 흐름에 대한 간략한 설명을 제공합니다. |
<Response> |
복합 객체 | 응답의 EventFlow 중에 실행할 정책을 정의합니다. |
<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> |
| 하위 요소 |
<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>의 하위 요소를 설명합니다.
| 하위 요소 | 유형 | 설명 |
|---|---|---|
<Step> |
문자열 | 요청 세그먼트 내에서 실행할 정책을 지정합니다. 이 유형의 하위 요소는 여러 번 표시될 수 있습니다. |
<Response>
흐름의 응답 세그먼트 중에 실행할 정책을 정의합니다.
| 유형 | 복합 객체 |
| 상위 요소 |
<Flow><PreFlow><PostClientFlow><PostFlow> |
| 하위 요소 |
<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>의 하위 요소를 설명합니다.
| 하위 요소 | 유형 | 설명 |
|---|---|---|
<Step> |
문자열 | 응답 세그먼트 내에서 실행할 정책을 지정합니다. 이 유형의 하위 요소는 여러 번 표시될 수 있습니다. |
<Step>
실행할 정책과 해당 정책의 실행 여부를 결정하는 조건(선택사항)을 지정합니다.
| 유형 | 복합 객체 |
| 상위 요소 |
<Request><Response> |
| 하위 요소 |
<Condition><Name> |
<Flow>에 정의된 단계가 한 개 이상일 수 있으며, 이 단계는 흐름의 XML에 정의된 순서대로 실행됩니다.
조건이 없는 단계는 항상 실행됩니다. 조건이 있는 단계는 조건이 true로 평가될 때만 실행됩니다. 조건이 false로 평가되면 Apigee가 단계를 건너뜁니다.
구문
<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로 평가되면 Apigee가 단계를 실행합니다. 문이 false로 평가되면 Apigee는 단계를 건너뜁니다. |
<Name> |
문자열 | 현재 흐름에서 실행할 정책의 ID를 지정합니다. |