Stai visualizzando la documentazione di Apigee Edge.
Vai alla
documentazione di Apigee X. informazioni
Questa sezione fornisce informazioni di riferimento sugli elementi XML che utilizzi per definire i flussi del proxy API.
Gerarchia e sintassi
I seguenti esempi mostrano la gerarchia degli elementi e la sintassi degli elementi di configurazione dei flussi:
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 elementi è descritto dettagliatamente 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 consentono di definire l'esecuzione di PreFlow, Conditional Flow, PostFlow e PostClientFlow.
<Condition>
Definisce un'istruzione che viene 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.
Digitare | 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 elemento <Step>
restituisce true, Edge esegue quel passaggio. Se la condizione è falsa, Edge salta il passaggio.
Se una condizione all'interno di un oggetto <Flow>
restituisce true, Edge elabora tutti i passaggi del flusso. Se la condizione restituisce false, Edge ignora 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 nella tua
condizione. Ad esempio, la variabile di flusso
request
ha proprietà denominatepath
econtent
. Per utilizzarle in una condizione, specifica flow_variable[dot]property_name:request.path request.content
Per un elenco completo delle variabili di flusso e delle loro proprietà, consulta il riferimento sulle 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 Condizioni.
- "value"
- Il valore in base al quale viene valutata la proprietà della variabile di flusso. Di solito si tratta di un tipo di base, ad esempio 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 del pattern, come descritto in Corrispondenza di pattern con condizionali.
Esempio 1
L'esempio seguente controlla 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 è di tipo "GET", questo esempio esegue il criterio "Log-Request-OK".
Esempio 2
L'esempio seguente verifica 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. Utilizza questo elemento per fornire informazioni sul flusso a te o ad altri sviluppatori. La descrizione non è visibile esternamente.
Digitare | 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
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 Edge.
Digitare | Oggetto complesso |
Elementi principali | <Flows> |
Elementi secondari | <Condition> <Description> <Request> <Response> |
Facoltativamente, puoi specificare un <Condition>
su un <Flow>
. In questo caso, Edge esegue i passaggi nel flusso solo se la condizione è true. In caso contrario, Edge salta l'intero flusso.
Un elemento <Flows>
può contenere più elementi <Flow>
, ciascuno con la propria condizione e i propri passaggi. Quando ci sono più elementi <Flow>
, Edge esegue solo il primo in cui non sono presenti condizioni o in cui la condizione è 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 per la protezione da attacchi dannosi.
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 <Flow>
semplice 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 oggetto <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>
Edge esegue un solo flusso in un segmento; esegue il primo flusso che non ha una condizione o la cui condizione viene risolta in true.
Attributi
La tabella seguente descrive gli attributi dell'elemento <Flow>
:
Attributo | Tipo | Descrizione |
---|---|---|
name |
Stringa | (Obbligatorio) Un ID univoco del flusso. Ad esempio, "My-Conditional-Flow-1". Il nome non può contenere spazi o altri caratteri speciali. |
Elementi secondari
Nella tabella seguente vengono descritti gli elementi secondari di <Flow>
:
Elemento secondario | Tipo | Descrizione |
---|---|---|
<Condition> |
Stringa | Definisce un'istruzione condizionale elaborata durante il runtime. Se l'istruzione restituisce true, viene eseguito il flusso (e tutti i relativi passaggi). Se l'istruzione restituisce false, il flusso (e tutti i suoi 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 di richiesta. |
<Response> |
Oggetto complesso | Specifica i passaggi e le condizioni per il segmento di risposta. |
<Flows>
Contiene zero o più elementi <Flow>
.
Digitare | Oggetto complesso |
Elementi principali | <ProxyEndpoint> <TargetEndpoint> |
Elementi secondari | <Flow> |
Se sono presenti più elementi <Flow>
all'interno di <Flows>
, verrà eseguito un solo elemento <Flow>
. Questo
sarà il primo flusso che non ha un valore <Condition>
o la cui condizione si risolve
in true.
Puoi definire un flusso predefinito che viene sempre eseguito (se nessuno degli altri flussi lo fa). A seconda di come è configurato il proxy API, questo può essere uno strumento utile per la protezione da attacchi dannosi.
Sintassi
La sintassi dell'elemento <Flows>
è la seguente:
<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 elemento <Flows>
semplice con un singolo elemento <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>
Edge 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, Edge non esegue questo flusso.
Esempio 2
L'esempio seguente mostra più elementi <Flow>
all'interno di <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>
Edge esegue solo il primo flusso in un segmento la cui condizione è true. Dopodiché, Edge ignora i flussi rimanenti nel segmento.
Esempio 3
L'esempio seguente mostra un valore <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>
Edge esegue solo il primo flusso in un segmento la cui condizione è true. Se non vengono eseguiti flussi condizionali, viene eseguito il terzo flusso di questo esempio (senza condizione).
Un flusso predefinito può essere uno strumento utile per la protezione da attacchi dannosi.
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 una <Flow>
.
Digitare | 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 che vengono aggiunti 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.
Digitare | 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 per la richiesta e la risposta definiti:
<!-- 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
Nella tabella seguente vengono descritti 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 in ProxyEndpoint i criteri che vengono eseguiti solo dopo che è stata restituita una risposta al client. Questi criteri in genere registrano i messaggi relativi alla risposta.
Digitare | 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
Nell'esempio seguente viene mostrato 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
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
Nella tabella seguente vengono descritti 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 pre-flusso della richiesta e della risposta.
Digitare | 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
Nell'esempio seguente viene mostrato un flusso preliminare con una 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
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
Nella tabella seguente vengono descritti 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 preflusso della richiesta. |
<Response> |
Oggetto complesso | Definisce i criteri da eseguire durante il preflusso della risposta. |
<Request>
Definisce i criteri da eseguire durante il segmento di richiesta del flusso.
Digitare | Oggetto complesso |
Elementi principali | <Flow> <PreFlow> <PostFlow> |
Elementi secondari | <Condition> <Step> |
Sintassi
La sintassi dell'elemento <Request>
è la seguente:
<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 che 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
Nella tabella seguente vengono descritti gli elementi secondari di <Request>
:
Elemento secondario | Tipo | Descrizione |
---|---|---|
<Condition> |
Oggetto complesso | Determina se i passaggi all'interno del segmento di richiesta vengono eseguiti. |
<Step> |
Stringa | Specifica un criterio da eseguire all'interno del segmento della richiesta. |
<Response>
Definisce i criteri da eseguire durante il segmento di risposta del flusso.
Digitare | 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 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
Nella tabella seguente vengono descritti 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 il criterio.
Digitare | Oggetto complesso |
Elementi principali | <Request> <Response> |
Elementi secondari | <Condition> <Name> |
In una <Flow>
può essere definito più di un passaggio e i passaggi vengono eseguiti nell'ordine in cui sono definiti nel codice 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 è false, Edge ignora il passaggio.
Sintassi
La sintassi dell'elemento <Step>
è la seguente:
<Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step>
Possono esserci solo un <Condition>
e un <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 viene eseguito ogni volta durante il segmento della richiesta. Il passaggio con una condizione viene eseguito solo quando la richiesta è "GET" durante il segmento di 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
Nella tabella seguente vengono descritti gli elementi secondari di <Step>
:
Elemento secondario | Tipo | Descrizione |
---|---|---|
<Condition> |
Stringa | Definisce un'istruzione condizionale per il passaggio elaborato in fase di esecuzione. Se l'istruzione restituisce true, Edge esegue il passaggio. Se l'istruzione restituisce false, Edge ignora il passaggio. |
<Name> |
Stringa | Specifica l'ID del criterio da eseguire nel flusso corrente. |