Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.
Le variabili di flusso sono oggetti a cui puoi accedere dall'interno dei tuoi criteri o come lo strumento di debug. Consentono di mantenere uno stato associato Transazione API elaborata da Apigee.
Che cosa sono le variabili di flusso?
Le variabili di flusso esistono nel contesto di un flusso proxy API e tracciano lo stato in un'API transazione come le variabili con nome monitorano lo stato in un programma software. Archiviazione delle variabili di flusso informazioni quali:
- Indirizzo IP, intestazioni, percorso dell'URL e payload inviato dall'app richiedente
- Informazioni di sistema come la data e l'ora in cui Apigee riceve una richiesta
- Dati ricavati durante l'esecuzione di un criterio. Ad esempio, dopo l'esecuzione di un criterio che convalida un token OAuth, Apigee crea variabili di flusso che contengono informazioni come il nome dell'applicazione richiedente.
- Informazioni sulla risposta del sistema di destinazione
Alcune variabili sono integrate in Apigee e vengono compilate automaticamente ogni volta che viene inviata una richiesta API quando riceve il messaggio di errore. Sono disponibili durante una transazione API. Puoi anche creare variabili personalizzate mediante criteri come il criterioAssignMessage o in JavaScript e Codice Java.
Come vedrai, le variabili hanno un ambito e la loro accessibilità dipende in parte da quando vengono create nel flusso del proxy API. In generale, quando una variabile viene creata, è disponibile tutti i criteri e il codice che verranno eseguiti successivamente nel flusso di transazione dell'API.
Come vengono utilizzate le variabili di flusso?
Le variabili di flusso sono utilizzate norme e condizionale dei flussi:
- I criteri possono recuperare lo stato dalle variabili di flusso e utilizzarlo per svolgere il loro lavoro.
Ad esempio, un criterioVerifyJWT può recuperare il token da verificare una variabile di flusso, quindi eseguire la verifica su questa variabile. Un altro esempio è un regolamento JavaScript che può recuperare le variabili di flusso e codificare i dati contenuti al loro interno.
- I flussi condizionali possono fare riferimento a variabili di flusso per indirizzare il flusso di un'API
tramite Apigee, in modo simile al funzionamento di un'istruzione di switch nella programmazione.
Ad esempio, un criterio per restituire un errore può essere eseguito solo quando una particolare variabile di flusso viene per iniziare.
Vediamo alcuni esempi di come le variabili vengono utilizzate in ciascuno di questi contesti.
Variabili di flusso nei criteri
Alcune norme accettano come input le variabili di flusso.
Ad esempio, il seguente criterio Assegna messaggio prende il valore della variabile di flusso client.ip
e lo inserisce in un'intestazione della richiesta denominata My-Client-IP
. Se aggiunto al flusso di richiesta, questo criterio imposta un'intestazione
che viene passata al target di backend. Se impostata nel flusso di risposta, l'intestazione viene inviata
all'app client.
<AssignMessage name="set-ip-in-header"> <AssignTo createNew="false" transport="http" type="request">request</AssignTo> <Set> <Headers> <Header name="My-Client-IP">{client.ip}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </AssignMessage>
Per un altro esempio, quando viene eseguito un criterio per le quote, vengono compilate diverse variabili di flusso.
con valori legati alle norme. Una di queste variabili è
chiamato ratelimit.my-quota-policy.used.count
(dove my-quota-policy
è
il nome del criterio per le quote che ti interessa).
In un secondo momento, potresti eseguire un flusso condizionale
che dica "se il conteggio della quota corrente è inferiore al 50% del massimo e siamo tra le 9:00 e le 17:00,
applica una quota diversa". Questa condizione potrebbe dipendere dal valore del conteggio della quota corrente
e da una variabile di flusso denominata system.time
, che è una delle variabili Apigee predefinite.
Variabili di flusso nei flussi condizionali
Flussi condizionali valutare le variabili di flusso e abilitare il comportamento dinamico dei proxy. Di solito si utilizzano le condizioni per modificare il comportamento di flussi, passaggi e regole di route.
Ecco un flusso condizionale che valuta
il valore della variabile request.verb
in un passaggio del flusso proxy. In questo caso, se il verbo della richiesta è POST, viene eseguito il criterio VerifyAPIKey. Questo è un metodo comune utilizzato in
Configurazioni del proxy API.
<PreFlow name="PreFlow"> <Request> <Step> <Condition>request.verb equals "POST"</Condition> <Name>VerifyApiKey</Name> </Step> </Request> </PreFlow>
Ora potresti chiederti da dove provengono variabili come request.verb
,
client.ip
e system.time
. Quando vengono attivati e completati con un valore? Per aiutarti a capire quando vengono create le variabili
disponibili, consulta Visualizzare il flusso di un proxy API.
Variabili di flusso nel codice JavaScript richiamate con il metodo norme
Con il criterio JavaScript, puoi eseguire codice JavaScript nel contesto di un flusso proxy API. Il codice JavaScript eseguito da questo criterio utilizza il modello di oggetti JavaScript di Apigee, che fornisce al codice personalizzato l'accesso agli oggetti di richiesta, risposta e contesto associati al flusso del proxy API in cui viene eseguito il codice. Ad esempio, questo codice imposta un'intestazione di risposta con il valore ottenuto dalla variabile del flusso target.name.
context.setVariable("response.header.X-Apigee-Target", context.getVariable("target.name"));
Questa tecnica di utilizzo di JavaScript per leggere e impostare variabili è simile alla procedura che puoi eseguire con il criterioAssignMessage (mostrato in precedenza). È solo un altro modo per eseguire le stesse operazioni su Apigee. La cosa importante da ricordare è che il codice JavaScript eseguito dal criterio JavaScript ha accesso a tutte le variabili di flusso esistenti e in ambito all'interno del flusso del proxy API.
Visualizzazione del flusso di un proxy API
Per comprendere l'ambito delle variabili di flusso, è importante capire o visualizzare il modo in cui i messaggi vengono inviati tramite un proxy API. Un proxy API è costituito da una serie di passaggi di elaborazione dei messaggi organizzati come un flusso. In ogni fase di un flusso del proxy, il proxy valuta le informazioni disponibili e decide cosa fare. Durante il percorso, il proxy può eseguire codice di criteri o eseguire ramificazioni condizionali.
La figura seguente illustra questa sequenza di flussi. Nota come sono composti i flussi Quattro segmenti principali: ProxyEndpoint request, TargetEndpoint request, TargetEndpoint response e ProxyEndpoint response.
Tieni presente questa struttura di flusso mentre iniziamo a esplorare le variabili di flusso attraverso il resto questo argomento.
Come l'ambito della variabile è correlato al flusso del proxy
Non appena riesci a visualizzare il flusso dei messaggi attraverso un proxy, come descritto in precedenza, puoi iniziare a comprendere l'ambito delle variabili. Per ambito, intendiamo il punto nel ciclo di vita del flusso proxy quando viene creata un'istanza per la prima volta.
Ad esempio, se un criterio è associato alla segmento di richiesta ProxyEndpoint, questo criterio non sarà in grado di accedere a nessuna variabile con ambito al segmento di richiesta TargetEndpoint. Il motivo è che l'oggetto TargetEndpoint segmento di richiesta del flusso non è stato ancora eseguito, quindi il proxy API non ha avuto l'opportunità di per compilare le variabili in quell'ambito.
La tabella seguente elenca l'insieme completo di ambiti delle variabili e indica quando nel proxy e il flusso di lavoro disponibili.
Ambito variabile | Dove vengono completate queste variabili |
---|---|
richiesta proxy | Il segmento di richiesta ProxyEndpoint |
richiesta target | Segmento di richiesta TargetEndpoint |
risposta target | Il segmento di risposta TargetEndpoint |
risposta proxy | Il segmento di risposta ProxyEndpoint |
sempre disponibile | Non appena il proxy riceve una richiesta. Queste variabili sono disponibili tramite l'intero ciclo di vita del flusso proxy. |
Ad esempio, esiste una variabile Apigee integrata chiamata client.ip
. Questa
variabile ha
ambito richiesta proxy. Viene automaticamente compilato con l'indirizzo IP del client che
chiamato proxy. Viene compilato quando una richiesta raggiunge per la prima volta ProxyEndpoint e rimane disponibile per tutto il ciclo di vita del flusso del proxy.
Esiste un'altra variabile integrata chiamata target.url
. L'ambito di questa variabile è
richiesta target. Viene compilato nel segmento della richiesta TargetEndpoint con l'URL della richiesta inviato al target di backend. Se provi ad accedere a target.url
nella richiesta ProxyEndpoint
riceverai un valore NULL
. Se provi a impostare questa variabile prima che rientri nell'ambito, il proxy non fa nulla, non genera un errore e non imposta la variabile.
Ecco un semplice esempio che mostra come pensare all'ambito variabile. Supponiamo che tu voglia per copiare l'intero contenuto di un oggetto della richiesta (intestazioni, parametri, corpo) e assegnarlo al payload di risposta da rinviare all'app chiamante. Puoi utilizzare il criterioAssignMessage per questa attività. Il codice del criterio ha il seguente aspetto:
<AssignMessage name="CopyRequestToResponse"> <AssignTo type="response" createNew="false">response</AssignTo> <Copy source="request"/> </AssignMessage>
Questo criterio copia semplicemente l'oggetto request
e lo assegna all'oggetto response
. Ma dove deve essere posizionato questo criterio nel flusso del proxy? La
è che deve essere posizionata sulla risposta TargetEndpoint, perché l'ambito
la variabile di risposta è risposta target.
Fare riferimento alle variabili di flusso
Tutte le variabili predefinite in Apigee seguono una convenzione di denominazione con la notazione a punti. Questa convenzione
semplifica la determinazione dello scopo della variabile. Ad esempio, system.time.hour
e request.content
.
Apigee riserva vari prefissi per organizzare correttamente le variabili pertinenti. Questi prefìsi includono:
request
response
system
target
Per fare riferimento a una variabile in un criterio, racchiudila tra parentesi graffe. Ad esempio:
il seguente criterioAssignMessage prende il valore della variabile client.ip
e
lo inserisce in un'intestazione della richiesta denominata Client-IP
.
<AssignMessage name="set-ip-in-header"> <AssignTo createNew="false" transport="http" type="request">request</AssignTo> <Set> <Headers> <Header name="Client-IP">{client.ip}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </AssignMessage>
Nei flussi condizionali, le parentesi graffe non sono necessarie. La seguente condizione di esempio
valuta la variabile request.header.accept
:
<Step> <Condition>request.header.accept = "application/json"</Condition> <Name>XMLToJSON</Name> </Step>
Puoi anche fare riferimento alle variabili di flusso nel codice JavaScript e Java. Per ulteriori informazioni, vedi:
Tipo di dati delle variabili di flusso
Ogni proprietà di una variabile di flusso ha un tipo di dati ben definito, come String, Long, Integer, Booleano o di raccolta. Puoi trovare i tipi di dati elencati nel riferimento alle variabili di flusso. Per le variabili create da un criterio, fai riferimento all'argomento Riferimento alle norme specifico per informazioni sui tipi di dati.
Le variabili create manualmente presuppongono il tipo specificato al momento della creazione e dipendono sui tipi di valori consentiti.
Utilizzare le variabili di flusso nei criteri
Molti criteri creano variabili di flusso durante la normale esecuzione. La Documenti di riferimento alle norme tutte queste variabili specifiche delle norme.
Quando utilizzi proxy e criteri, consulta obbligatoriamente il riferimento ai criteri per scoprire quali variabili vengono create e a cosa servono. Per Ad esempio, i criteri per le quote creano un insieme di variabili contenenti informazioni sul conteggio delle quote e limiti, data di scadenza e così via.
Alcune variabili di criteri sono utili per il debug. Puoi utilizzare lo strumento di debug), ad esempio per per vedere quali variabili sono state impostate in una determinata istanza in un flusso proxy.
Il criterio ExtractVariables ti consente di compilare le variabili personalizzate con i dati estratti dai messaggi. Puoi estrarre parametri di query, intestazioni e altri dati. Ad esempio, puoi analizzare messaggi di richiesta e risposta utilizzando pattern per estrarre dati specifici dai messaggi.
Nell'esempio seguente, il criterio ExtractVariables analizza un messaggio di risposta e archivia
specifici presi dalla risposta. Il criterio crea due variabili personalizzate, geocoderesponse.latitude
e geocoderesponse.longitude
, e li assegna ai valori.
<ExtractVariables name="ParseGeocodingResponse"> <Source>response</Source> <VariablePrefix>geocoderesponse</VariablePrefix> <JSONPayload> <Variable name="latitude"> <JSONPath>$.results[0].geometry.location.lat</JSONPath> </Variable> <Variable name="longitude"> <JSONPath>$.results[0].geometry.location.lng</JSONPath> </Variable> </JSONPayload> </ExtractVariables>
Tieni presente che molti criteri creano automaticamente variabili. Puoi accedere a queste variabili nel contesto del flusso proxy e sono documentate nel riferimento alle norme in ogni singolo argomento delle norme.
Utilizzare le variabili di flusso nel codice JavaScript
Puoi accedere e impostare le variabili direttamente nel codice JavaScript in esecuzione nel contesto di un proxy API. Attraverso il modello di oggetti JavaScript Apigee, JavaScript in esecuzione Apigee ha accesso diretto alle variabili di flusso proxy.
Per accedere alle variabili nel codice JavaScript, richiama i metodi getter/setter su uno di questi oggetti:
context
proxyRequest
proxyResponse
targetRequest
targetResponse
Come puoi vedere, questi riferimenti agli oggetti mappano i segmenti familiari del modello di flusso del proxy come spiegato in precedenza in Visualizzazione del flusso di un proxy API.
L'oggetto context
corrisponde alle variabili disponibili a livello globale, come le variabili di sistema
come la codifica one-hot
delle variabili categoriche. Ad esempio, puoi chiamare getVariable()
sull'oggetto context
per conoscere l'anno in corso:
var year = context.getVariable('system.time.year');
Analogamente, puoi chiamare setVariable()
per impostare il valore di una variabile personalizzata o di qualsiasi variabile predefinita e modificabile. Qui creiamo una variabile personalizzata denominata
organization.name.myorg
e le assegniamo un valore.
var org = context.setVariable('organization.name.myorg', value);
Poiché questa variabile viene creata con l'oggetto context
, sarà disponibile per tutti i segmenti di flusso (in sostanza, è come creare una variabile globale).
Puoi anche ottenere o impostare variabili di flusso proxy nel codice Java che esegui con Norme JavaCallout.
Che cosa devi ricordare
Di seguito sono riportati alcuni aspetti importanti da ricordare sulle variabili di flusso:
- Per alcune variabili out-of-the-box viene creata un'istanza e compilata automaticamente dal proxy per trovare le regole. Queste sono documentate nella sezione Riferimento alle variabili di flusso.
- Puoi creare variabili personalizzate disponibili per l'utilizzo nel flusso proxy. È possibile creare variabili utilizzando criteri come il criterio Assegna messaggio e il criterio JavaScript.
- Le variabili hanno un ambito. Ad esempio, alcune variabili vengono completate automaticamente quando il primo proxy riceve una richiesta da un'app. Altre variabili vengono completate nel segmento del flusso di risposta del proxy. Queste variabili di risposta rimangono non definite finché il segmento di risposta .
- Quando vengono eseguiti, i criteri possono creare e compilare variabili specifiche. La nella documentazione di ciascuna norma l'elenco di tutte queste variabili specifiche della norma pertinenti.
- I flussi condizionali in genere valutano una o più variabili. Devi comprendere per creare flussi condizionali.
- Molti criteri utilizzano le variabili come input o output. Supponiamo che venga creata da una variabile in seguito viene usato da un altro criterio.
Argomenti correlati
- Tutte le variabili compilate automaticamente in un proxy API sono elencate nella sezione Riferimento per le variabili di flusso. Il riferimento elenca anche il tipo e l'ambito di ogni variabile.
- Se vuoi sapere quali variabili compila un determinato criterio, consulta il riferimento per le norme. Ad esempio, vedi Le variabili di flusso nel Riferimento per i criteri per le quote.