Questa pagina si applica a Apigee e Apigee ibridi.
Visualizza la documentazione di Apigee Edge.
Questa sezione fornisce informazioni di riferimento sugli elementi XML che utilizzi per definire Flussi del proxy API.
Gerarchia e sintassi
Gli esempi seguenti mostrano la gerarchia e la sintassi degli elementi di configurazione del flusso:
Gerarchia degli elementi
L'esempio seguente mostra la gerarchia degli elementi di configurazione del flusso all'interno degli elementi <ProxyEndpoint>
e <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>
Sintassi
L'esempio seguente mostra la sintassi per gli elementi di configurazione del flusso. Ciascuno di questi viene descritta in dettaglio nelle sezioni seguenti:
<!-- 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>
Questi elementi vengono utilizzati per definire i valori PreFlow, Conditional Flow, PostFlow e PostClientFlow. dell'esecuzione.
<Condition>
Definisce un'istruzione che viene elaborata in fase di esecuzione. Se l'istruzione restituisce true, viene eseguito il passaggio o il flusso associato alla condizione. Se l'istruzione è falsa, il passaggio o il flusso viene ignorato.
Tipo | Stringa |
Elementi principali |
<Flow> <Step> |
Elementi secondari | Nessuno |
Puoi applicare una condizione a un passaggio specifico o a un intero flusso, a seconda che tu abbia inserito
L'elemento nell'elemento <Flow>
o <Step>
:
// Condition can apply to just one step: // Or to the flow:<Flows>
<Flows>
<Flow>
<Flow>
<Step>
<Condition>
<Condition>
<Step>
<Name>
<Name>
... ... ... ... ... ... </Flows> </Flows>
Se una condizione all'interno di un <Step>
restituisce true, Apigee esegue quel passaggio. Se la condizione
restituisce false, Apigee salta il passaggio.
Se una condizione all'interno di un <Flow>
restituisce true, Apigee elabora tutti i passaggi del flusso. Se la condizione è falsa, Apigee salta l'intero flusso.
Sintassi
La sintassi dell'elemento <Condition>
è la seguente:
<Condition>property operator "value"</Condition>
Dove:
- property
- La proprietà della variabile di flusso che vuoi utilizzare nel tuo
. Ad esempio, la variabile di flusso
request
ha proprietà denominatepath
econtent
. Per utilizzarle in una condizione, devi specificare flow_variable[punto]property_name:request.path request.content
Per un elenco completo delle variabili di flusso e delle relative proprietà, consulta Riferimento alle variabili di flusso.
- operator
- Un costrutto che definisce il modo in cui viene valutata la condizione. Comuni
tra cui:
> greater than <= less than or equal to < less than >= greater than or equal to = equals && and != not equals || or ~~ JavaRegex ~ Matches /~ MatchesPath
Per un elenco completo, vedi Operatori nel Riferimento alle condizioni.
- "value"
- Il valore in base al quale viene valutata la proprietà della variabile di flusso. In genere questa è
un tipo di base come un numero intero o una stringa. Ad esempio,
200
o/cat
. Il valore può includere caratteri jolly, come asterischi e altri caratteri per la corrispondenza dei pattern, come descritti in Corrispondenza di pattern con condizionali.
Esempio 1
L'esempio seguente verifica se la variabile di flusso request
verb
la proprietà è 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>
Se la richiesta è GET
, questo esempio esegue il criterio Log-Request-OK
.
Esempio 2
L'esempio seguente controlla il codice di risposta:
<!-- 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>
A seconda del valore del codice, viene eseguito un criterio diverso.
Attributi
L'elemento <Condition>
non ha attributi.
Elementi secondari
L'elemento <Condition>
non ha elementi secondari.
<Description>
Descrive il flusso in termini leggibili da una persona. Utilizza questo elemento per fornire informazioni sul flusso a te o ad altri sviluppatori. La descrizione non è visibile all'esterno.
Tipo | Stringa |
Elementi principali |
<Flow> <PreFlow> <PostFlow> |
Elementi secondari | Nessuno |
Sintassi
La sintassi dell'elemento <Description>
è la seguente:
<Description>flow_description</Description>
Esempio
L'esempio seguente mostra un elemento <Description>
che specifica lo scopo di un
dell'output:
<!-- 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>
Attributi
L'elemento <Description>
non ha attributi.
Elementi secondari
L'elemento <Description>
non ha elementi secondari.
<Flow>
Definisce un insieme di passaggi personalizzati eseguiti da Apigee.
Tipo | Oggetto complesso |
Elementi principali |
<Flows> |
Elementi secondari |
<Condition> <Description> <Request> <Response> |
Facoltativamente, puoi specificare un <Condition>
in un <Flow>
. In questo caso, Apigee esegue solo
i passaggi del flusso se la condizione restituisce true. In caso contrario, Apigee salta l'intero
flusso.
Un elemento <Flows>
può contenere più elementi <Flow>
, ciascuno con la propria condizione
e passi. Quando sono presenti più elementi <Flow>
, Apigee esegue solo il primo in cui non è presente alcuna condizione o la condizione è valutata come true.
Puoi definire un flusso predefinito che viene sempre eseguito (se nessuno degli altri flussi condizionali lo fa). A seconda di come è configurato il proxy API, questo può essere uno strumento utile in protezione contro i attacchi informatici.
Sintassi
La sintassi dell'elemento <Flow>
è la seguente:
<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>
Tutti gli elementi secondari di <Flow>
sono facoltativi.
Esempio 1
L'esempio seguente mostra un semplice <Flow>
che esegue sempre il criterio "Log-Message-OK":
<!-- 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>
Esempio 2
L'esempio seguente mostra un <Flow>
con più passaggi, ciascuno con la propria
condizione:
<!-- 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>
Esempio 3
L'esempio seguente mostra più flussi in un flusso condizionale:
<!-- 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 esegue un solo flusso in un segmento; esegue il primo flusso che non ha una condizione o la cui condizione si risolve in true.
Attributi
La tabella seguente descrive gli attributi dell'elemento <Flow>
:
Attributo | Tipo | Descrizione |
---|---|---|
name |
Stringa | (Obbligatorio) Un ID univoco per il flusso. Ad esempio:
My-Conditional-Flow-1 . Il nome non può contenere spazi o altri caratteri speciali. |
Elementi secondari
La tabella seguente descrive gli elementi secondari di <Flow>
:
Elemento secondario | Tipo | Descrizione |
---|---|---|
<Condition> |
Stringa | Definisce un'istruzione condizionale che viene elaborata in fase di esecuzione. Se l'istruzione restituisce su true, viene eseguito il flusso (e tutti i suoi passaggi). Se l'istruzione restituisce false, il flusso (e tutti i relativi passaggi) vengono ignorati. |
<Description> |
Stringa | Fornisce una breve descrizione del flusso. Questa descrizione non è visibile all'esterno. |
<Request> |
Oggetto complesso | Specifica i passaggi e le condizioni per il segmento di richiesta. |
<Response> |
Oggetto complesso | Specifica i passaggi e le condizioni per il segmento di risposta. |
<Flows>
Contiene zero o più elementi <Flow>
.
Tipo | Oggetto complesso |
Elementi principali |
<ProxyEndpoint> <TargetEndpoint> |
Elementi secondari |
<Flow> |
Se sono presenti più elementi <Flow>
in <Flows>
, verrà eseguito solo uno <Flow>
. Questo
sarà il primo flusso che non ha un elemento <Condition>
o la cui condizione è stata risolta
su true.
Puoi definire un flusso predefinito che viene sempre eseguito (se nessuno degli altri flussi lo fa). A seconda della configurazione del proxy API, questo può essere uno strumento utile per difendersi da attacchi malintenzionati.
Sintassi
L'elemento <Flows>
utilizza la seguente sintassi:
<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>
Tutti gli elementi secondari di <Flows>
sono facoltativi.
Esempio 1
L'esempio seguente mostra un semplice elemento <Flows>
con un singolo <Flow>
:
<!-- 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 esegue uno di questi criteri in base al suffisso del percorso che raccoglie dal
proxy
. Se il suffisso del percorso non corrisponde a nessuna delle condizioni,
Apigee non esegue questo flusso.
Esempio 2
L'esempio seguente mostra più elementi <Flow>
in <Flows>
, ciascuno con il proprio
<Condition>
:
<!-- 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 esegue solo il primo flusso in un segmento la cui condizione è valutata come true. Dopodiché, Apigee salta i flussi rimanenti nel segmento.
Esempio 3
L'esempio seguente mostra un valore "default" <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 esegue solo il primo flusso in un segmento la cui condizione è valutata come true. Se non vengono eseguiti flussi condizionali, viene eseguito il terzo flusso in questo esempio (senza condizione).
Un flusso predefinito può essere uno strumento utile protezione contro i attacchi informatici.
Attributi
L'elemento <Flows>
non ha attributi.
Elementi secondari
L'elemento <Flows>
ha i seguenti elementi secondari:
Elemento secondario | Tipo | Descrizione |
---|---|---|
<Flow> |
Oggetto complesso | Un flusso che definisce un possibile insieme di passaggi all'interno del flusso condizionale. |
<Name>
Specifica l'ID del criterio da eseguire in un <Flow>
.
Tipo | Stringa |
Elementi principali |
<Step> |
Elementi secondari | Nessuno |
Sintassi
La sintassi dell'elemento <Name>
è la seguente:
<Name>policy_name</Name>
Esempio
L'esempio seguente mostra due criteri aggiunti ai flussi con il loro nome:
<!-- 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>
Attributi
L'elemento <Name>
non ha attributi.
Elementi secondari
L'elemento <Name>
non ha elementi secondari.
<PostFlow>
Definisce i passaggi da eseguire nel PostFlow della richiesta e della risposta.
Tipo | Oggetto complesso |
Elementi principali |
<ProxyEndpoint> <TargetEndpoint> |
Elementi secondari |
<Description> <Request> <Response> |
La sintassi dell'elemento <PostFlow>
è la seguente:
Sintassi
<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>
Esempio
L'esempio seguente mostra un PostFlow con passaggi sia per la richiesta che per la risposta definita:
<!-- 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>
Attributi
Nella tabella seguente vengono descritti gli attributi dell'elemento <PostFlow>
:
Attributo | Tipo | Descrizione |
---|---|---|
name |
Stringa | Un ID univoco per il flusso (univoco all'interno dell'endpoint). Ad esempio,
My-PostFlow-1 . Il valore
non può includere spazi o altri caratteri speciali. |
Elementi secondari
La tabella seguente descrive gli elementi secondari di <PostFlow>
:
Elemento secondario | Tipo | Descrizione |
---|---|---|
<Description> |
Stringa | Fornisce una breve descrizione del flusso. |
<Request> |
Oggetto complesso | Definisce i criteri da eseguire durante il PostFlow della richiesta. |
<Response> |
Oggetto complesso | Definisce i criteri da eseguire durante il PostFlow della risposta. |
<PostClientFlow>
Definisce i criteri in ProxyEndpoint che vengono eseguiti solo dopo che è stata restituita una risposta al client. Questi criteri in genere registrano i messaggi relativi alla risposta.
Tipo | Oggetto complesso |
Elementi principali |
<ProxyEndpoint> |
Elementi secondari |
<Description> <Response> |
Sintassi
La sintassi dell'elemento <PostClientFlow>
è la seguente:
<PostClientFlow name="flow_name"> <Description>flow_description</Description> <Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response> </PostClientFlow>
Tutti gli elementi secondari di <PostClientFlow>
sono facoltativi.
Esempio
L'esempio seguente mostra un semplice PostClientFlow che esegue un singolo criterio:
<!-- 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>
Attributi
Nella tabella seguente vengono descritti gli attributi dell'elemento <PostClientFlow>
:
Attributo | Tipo | Descrizione |
---|---|---|
name |
Stringa | Un ID univoco per il flusso. Il nome non può includere spazi o altri caratteri speciali. Ad esempio, My-PostClientFlow-1 . |
Elementi secondari
La tabella seguente descrive gli elementi secondari di <PostClientFlow>
:
Elemento secondario | Tipo | Descrizione |
---|---|---|
<Description> |
Stringa | Fornisce una breve descrizione del flusso. |
<Response> |
Oggetto complesso | Definisce i criteri da eseguire durante il PostFlow della risposta. |
<PreFlow>
Definisce i criteri da eseguire nel flusso preliminare della richiesta e della risposta.
Tipo | Oggetto complesso |
Elementi principali |
<ProxyEndpoint> <TargetEndpoint> |
Elementi secondari |
<Description> <Request> <Response> |
Sintassi
La sintassi dell'elemento <PreFlow>
è la seguente:
<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>
Tutti gli elementi secondari di <PreFlow>
sono facoltativi.
Esempio
L'esempio seguente mostra un PreFlow con un flusso di richiesta e un flusso di risposta definiti:
<!-- 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>
Attributi
Nella tabella seguente vengono descritti gli attributi dell'elemento <PreFlow>
:
Attributo | Tipo | Descrizione |
---|---|---|
name |
Stringa | Un ID univoco per il flusso. Il nome non può includere spazi o altri spazi
caratteri. Ad esempio, My-PreFlow-1 . |
Elementi secondari
La tabella seguente descrive gli elementi secondari di <PreFlow>
:
Elemento secondario | Tipo | Descrizione |
---|---|---|
<Description> |
Stringa | Fornisce una breve descrizione del flusso. |
<Request> |
Oggetto complesso | Definisce i criteri da eseguire durante il PreFlow della richiesta. |
<Response> |
Oggetto complesso | Definisce i criteri da eseguire durante il PreFlow della risposta. |
<Request>
Definisce i criteri da eseguire durante il segmento di richiesta del flusso.
Tipo | Oggetto complesso |
Elementi principali |
<Flow> <PreFlow> <PostFlow> |
Elementi secondari |
<Condition> <Step> |
Sintassi
L'elemento <Request>
utilizza la seguente sintassi:
<Request> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Request>
Tutti gli elementi secondari di <Request>
sono facoltativi.
Esempio
L'esempio seguente mostra i flussi definiti per la richiesta sia in PreFlow sia in 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>
Attributi
L'elemento <Request>
non ha attributi.
Elementi secondari
La tabella seguente descrive gli elementi secondari di <Request>
:
Elemento secondario | Tipo | Descrizione |
---|---|---|
<Condition> |
Oggetto complesso | Determina se vengono eseguiti i passaggi all'interno del segmento di richiesta. |
<Step> |
Stringa | Specifica un criterio da eseguire nel segmento di richiesta. |
<Response>
Definisce i criteri da eseguire durante il segmento di risposta del flusso.
Tipo | Oggetto complesso |
Elementi principali |
<Flow> <PreFlow> <PostClientFlow> <PostFlow> |
Elementi secondari |
<Condition> <Step> |
Sintassi
La sintassi dell'elemento <Response>
è la seguente:
<Response> <Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step> ... </Response>
Tutti gli elementi secondari di <Response>
sono facoltativi.
Esempio
L'esempio seguente mostra i flussi definiti per la risposta, sia nel flusso PreFlow che 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>
Attributi
L'elemento <Response>
non ha attributi.
Elementi secondari
La tabella seguente descrive gli elementi secondari di <Response>
:
Elemento secondario | Tipo | Descrizione |
---|---|---|
<Condition> |
Stringa | Determina se i passaggi all'interno del segmento di risposta vengono eseguiti. |
<Step> |
Stringa | Specifica un criterio da eseguire all'interno del segmento di risposta. |
<Step>
Specifica un criterio da eseguire e (facoltativamente) una condizione che determina se eseguire o meno il criterio.
Tipo | Oggetto complesso |
Elementi principali |
<Request> <Response> |
Elementi secondari |
<Condition> <Name> |
In un <Flow>
può essere definito più di un passaggio, che viene eseguito nell'ordine in cui è definito nel file XML del flusso.
I passaggi senza una condizione vengono sempre eseguiti. I passaggi con una condizione vengono eseguiti solo se la condizione restituisce true. Se la condizione restituisce false, Apigee salta il passaggio.
Sintassi
L'elemento <Step>
utilizza la seguente sintassi:
<Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step>
Possono essere presenti un solo <Condition>
e un solo <Name>
per <Step>
, ma possono essere presenti più passaggi in un <Flow>
.
Tutti gli elementi secondari di <Step>
sono facoltativi.
Esempio 1
L'esempio seguente mostra un passaggio con una condizione e un passaggio senza una condizione:
<!-- 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>
Il passaggio senza la condizione verrà eseguito ogni volta durante il segmento di richiesta. Passaggio con una condizione viene eseguita solo quando la richiesta è "GET" durante la risposta in base al segmento.
Esempio 2
L'esempio seguente mostra più passaggi in un singolo segmento:
<!-- 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>
I passaggi senza una condizione vengono sempre eseguiti.
Attributi
L'elemento <Step>
non ha attributi.
Elementi secondari
Nella tabella seguente vengono descritti gli elementi secondari di <Step>
:
Elemento secondario | Tipo | Descrizione |
---|---|---|
<Condition> |
Stringa | Definisce un'istruzione condizionale per il passaggio che viene elaborato in fase di runtime. Se restituisce true, Apigee esegue il passaggio. Se l'istruzione restituisce false, Apigee salta il passaggio. |
<Name> |
Stringa | Specifica l'ID del criterio da eseguire nel flusso corrente. |