Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Questa sezione fornisce informazioni di riferimento sugli elementi XML che utilizzi per definire i flussi del proxy API.
Gerarchia e sintassi
Gli esempi seguenti mostrano la gerarchia degli elementi 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>
EventFlow<Response>
<Step>
<Description>
<PostClientFlow>
(<ProxyEndpoint> only)<Response>
<Description>
// Additional configuration elements </ProxyEndpoint | TargetEndpoint>
Sintassi
L'esempio seguente mostra la sintassi degli elementi di configurazione del flusso. Ognuno di questi elementi è descritto 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>
Utilizzi questi elementi per definire l'esecuzione di PreFlow, Conditional Flow, PostFlow, EventFlow e PostClientFlow.
<Condition>
Definisce un'istruzione elaborata in fase di runtime. Se l'istruzione restituisce true, viene eseguito il passaggio o il flusso associato alla condizione. Se l'istruzione restituisce false, il passaggio o il flusso viene ignorato.
Tipo | Stringa |
Elementi principali |
<Flow> <Step> |
Elementi figlio | Nessuno |
Puoi applicare una condizione a un passaggio specifico o a un intero flusso, a seconda che inserisci
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 questo passaggio. Se la condizione
restituisce il valore 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 restituisce il valore false, Apigee salta l'intero flusso.
Sintassi
L'elemento <Condition>
utilizza la seguente sintassi:
<Condition>property operator "value"</Condition>
Dove:
- property
- La proprietà della variabile di flusso che vuoi utilizzare nella
condizione. Ad esempio, la variabile di flusso
request
ha proprietà denominatepath
econtent
. Per utilizzarli in una condizione, specifica 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. Gli operatori
comuni includono:
> 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, consulta Operatori nel riferimento alle condizioni.
- "value"
- Il valore in base al quale viene valutata la proprietà della variabile di flusso. In genere si tratta di 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 descritto in Corrispondenza dei pattern con condizioni.
Esempio 1
Il seguente esempio verifica se la proprietà verb
della variabile di flusso request
è 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 è un 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 eseguita una norma diversa.
Attributi
L'elemento <Condition>
non ha attributi.
Elementi secondari
L'elemento <Condition>
non ha elementi secondari.
<Description>
Descrive il flusso in termini leggibili. Utilizza questo elemento per fornire informazioni sul flusso a te o ad altri sviluppatori. La descrizione non è visibile esternamente.
Tipo | Stringa |
Elementi principali |
<Flow> <PreFlow> <PostFlow> |
Elementi figlio | Nessuno |
Sintassi
L'elemento <Description>
utilizza la seguente sintassi:
<Description>flow_description</Description>
Esempio
L'esempio seguente mostra un elemento <Description>
che specifica lo scopo di un
flusso:
<!-- 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 personalizzato di passaggi eseguiti da Apigee.
Tipo | Oggetto complesso |
Elementi principali |
<Flows> |
Elementi figlio |
<Condition> <Description> <Request> <Response> |
Puoi specificare facoltativamente un <Condition>
su un <Flow>
. In questo caso, Apigee esegue
i passaggi nel flusso solo se la condizione restituisce il valore true. In caso contrario, Apigee salta l'intero flusso.
Un elemento <Flows>
può contenere più elementi <Flow>
, ognuno con la propria condizione
e i propri passaggi. Quando sono presenti più elementi <Flow>
, Apigee esegue solo il primo in cui
non è presente alcuna condizione o la condizione restituisce il valore true.
Puoi definire un flusso predefinito che viene sempre eseguito (se nessuno degli altri flussi condizionali lo fa). A seconda della configurazione del proxy API, questo può essere uno strumento utile per proteggere dagli attacchi dannosi.
Sintassi
L'elemento <Flow>
utilizza la seguente sintassi:
<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 <Flow>
semplice che esegue sempre la policy "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 elemento <Flow>
con più passaggi, ognuno 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 restituisce 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 elaborata in fase di runtime. Se l'istruzione restituisce true, il flusso (e tutti i relativi passaggi) viene eseguito. 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 esternamente. |
<Request> |
Oggetto complesso | Specifica i passaggi e le condizioni per il segmento della 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 figlio |
<Flow> |
Se all'interno di <Flows>
sono presenti più elementi <Flow>
, ne verrà eseguito solo uno.<Flow>
Questo
sarà il primo flusso che non ha un <Condition>
o la cui condizione restituisce
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 proteggere dagli attacchi dannosi.
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 dalla variabile di flusso
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>
all'interno di <Flows>
, ognuno 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 restituisce il valore true. Dopodiché, Apigee salta i flussi rimanenti nel segmento.
Esempio 3
L'esempio seguente mostra un <Flow>
"predefinito":
<!-- 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 restituisce il valore true. Se non viene eseguito alcun flusso condizionale, viene eseguito il terzo flusso di questo esempio (senza condizioni).
Un flusso predefinito può essere uno strumento utile per proteggerti da attacchi dannosi.
Attributi
L'elemento <Flows>
non ha attributi.
Elementi secondari
L'elemento <Flows>
prevede 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 all'interno di un <Flow>
.
Tipo | Stringa |
Elementi principali |
<Step> |
Elementi figlio | Nessuno |
Sintassi
L'elemento <Name>
utilizza la seguente sintassi:
<Name>policy_name</Name>
Esempio
L'esempio seguente mostra due policy aggiunte ai flussi in base al 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 figlio |
<Description> <Request> <Response> |
L'elemento <PostFlow>
utilizza la seguente sintassi:
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 definiti sia per la richiesta che per la risposta:
<!-- 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
La tabella seguente descrive 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. |
<EventFlow>
Definisce i passaggi da seguire in EventFlow
. EventFlow
viene utilizzato per supportare lo streaming di eventi inviati dal server. Per
ulteriori informazioni, vedi Eventi inviati dal server in streaming.
Tipo | Oggetto complesso |
Elementi principali |
<TargetEndpoint> |
Elementi figlio |
<Description> <Response> |
L'elemento EventFlow
utilizza la seguente sintassi:
Sintassi
<EventFlow name="flow_name" content-type="text/event-stream">> <Description>flow_description</Description> <Response> <Step> <Name>policy_name</Name> </Step> </Response> </EventFlow>
Esempio
L'esempio seguente mostra un 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>
Attributi
La tabella seguente descrive gli attributi dell'elemento EventFlow:
Attributo | Tipo | Descrizione |
---|---|---|
name |
Stringa | Un ID univoco per il flusso (univoco all'interno dell'endpoint). Ad esempio,
My-EventFlow-1 . Il
valore non può includere spazi o altri caratteri speciali. |
content-type |
Stringa | (Obbligatorio) Deve essere impostato su: content-type="text/event-stream" |
Elementi secondari
La tabella seguente descrive gli elementi secondari di EventFlow:
Elemento secondario | Tipo | Descrizione |
---|---|---|
<Description> |
Stringa | Fornisce una breve descrizione del flusso. |
<Response> |
Oggetto complesso | Definisce i criteri da eseguire durante l'EventFlow della risposta. |
<PostClientFlow>
Definisce le policy in ProxyEndpoint che vengono eseguite solo dopo che una risposta è stata restituita al client. Questi criteri in genere registrano i messaggi relativi alla risposta.
Tipo | Oggetto complesso |
Elementi principali |
<ProxyEndpoint> |
Elementi figlio |
<Description> <Response> |
Sintassi
L'elemento <PostClientFlow>
utilizza la seguente sintassi:
<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
Il seguente esempio mostra un semplice PostClientFlow che esegue una singola policy:
<!-- 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
La tabella seguente descrive 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 PreFlow della richiesta e della risposta.
Tipo | Oggetto complesso |
Elementi principali |
<ProxyEndpoint> <TargetEndpoint> |
Elementi figlio |
<Description> <Request> <Response> |
Sintassi
L'elemento <PreFlow>
utilizza la seguente sintassi:
<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 risposta definito:
<!-- 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
La tabella seguente descrive gli attributi dell'elemento <PreFlow>
:
Attributo | Tipo | Descrizione |
---|---|---|
name |
Stringa | Un ID univoco per il flusso. Il nome non può includere spazi o altri caratteri speciali. 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 le policy da eseguire durante il PreFlow della richiesta. |
<Response> |
Oggetto complesso | Definisce i criteri da eseguire durante il PreFlow della risposta. |
<Request>
Definisce le policy da eseguire durante il segmento di richiesta del flusso.
Tipo | Oggetto complesso |
Elementi principali |
<Flow> <PreFlow> <PostFlow> |
Elementi figlio |
<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 in PreFlow e 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 |
---|---|---|
<Step> |
Stringa | Specifica una policy da eseguire all'interno del segmento della richiesta. Questo tipo di figlio può essere visualizzato più volte. |
<Response>
Definisce i criteri da eseguire durante il segmento di risposta del flusso.
Tipo | Oggetto complesso |
Elementi principali |
<Flow> <PreFlow> <PostClientFlow> <PostFlow> |
Elementi figlio |
<Step> |
Sintassi
L'elemento <Response>
utilizza la seguente sintassi:
<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 in PreFlow che in 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 |
---|---|---|
<Step> |
Stringa | Specifica una policy da eseguire all'interno del segmento di risposta. Questo tipo di figlio può essere visualizzato più volte. |
<Step>
Specifica una policy da eseguire e (facoltativamente) una condizione che determina se eseguire la policy.
Tipo | Oggetto complesso |
Elementi principali |
<Request> <Response> |
Elementi figlio |
<Condition> <Name> |
In un <Flow>
possono essere definiti più passaggi e questi vengono eseguiti nell'ordine in cui sono definiti nell'XML del flusso.
I passaggi senza una condizione vengono sempre eseguiti. I passaggi con una condizione vengono eseguiti solo se la condizione restituisce il valore true. Se la condizione restituisce il valore false, Apigee salta il passaggio.
Sintassi
L'elemento <Step>
utilizza la seguente sintassi:
<Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step>
Può esserci solo un <Condition>
e un <Name>
per <Step>
, ma possono esserci
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 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 della richiesta. Il passaggio con una condizione viene eseguito solo quando la richiesta è "GET" durante il segmento della risposta.
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
La tabella seguente descrive gli elementi secondari di <Step>
:
Elemento secondario | Tipo | Descrizione |
---|---|---|
<Condition> |
Stringa | Definisce un'istruzione condizionale per il passaggio elaborato in fase di runtime. Se l'istruzione restituisce true, Apigee esegue il passaggio. Se l'istruzione restituisce false, Apigee salta il passaggio. |
<Name> |
Stringa | Specifica l'ID della policy da eseguire nel flusso corrente. |