Questa pagina si applica a Apigee e Apigee ibrido.
Visualizza la documentazione di
Apigee Edge.
Quando effettui una richiesta a un proxy API, puoi passare una o tutte le seguenti informazioni, a seconda del modo in cui è configurato il proxy API:
- Intestazioni delle richieste
- Parametri di query
- Dati del modulo
- Payload XML o JSON
- URI delle risorse
Per impostazione predefinita, tutti i dati in una richiesta vengono passati senza modifiche dal ProxyEndpoint al TargetEndpoint. Pertanto, quando TargetEndpoint effettua la richiesta al server di backend, tutte le informazioni nella richiesta originale vengono passate al servizio di backend.
Lo stesso vale per la risposta ricevuta da Apigee dal servizio di backend. Per impostazione predefinita, tutti i dati ricevuti nella risposta vengono passati senza modifiche all'app che ha originato la richiesta.
In che modo vengono passati i dati delle richieste al server di backend?
L'immagine seguente mostra una definizione del proxy API:
Per questo proxy API:
- Host virtuale proxy API:
default
- Dominio definito dai nomi host nel gruppo di ambienti:
http://www.example.com
- Percorso di base del proxy:
/v1/weather
- TargetEndpoint specificato dalla regola di route:
default
- URL di destinazione:
http://weather.yahooapis.com
Un'app client invia una richiesta GET
al proxy API utilizzando il seguente
comando curl
:
curl -X GET http://www.example.com/v1/weather/forecastrss?w=12797282
Tieni presente che questa richiesta contiene la risorsa forecastrss
e un parametro di query,
w
. Apigee analizza la richiesta come mostrato di seguito e assegna parti della richiesta alle variabili di flusso:
{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}
Le variabili di flusso sono impostate con i seguenti valori:
request.verb
:GET
proxy.basepath
:/v1/weather
proxy.pathsuffix
:forecastrss
request.querystring
:w=12797282
Il TargetEndpoint invia quindi una richiesta al servizio di backend utilizzando le informazioni provenienti dalla richiesta:
{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}
Osserva che i parametri di query e risorse specificati nella richiesta vengono inclusi automaticamente nella richiesta al server di backend. Dalla definizione di TargetEndpoint, la richiesta ha quindi il formato:
curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282
Come per i parametri di query, tutte le intestazioni o i parametri del modulo che includi nella richiesta al proxy API vengono trasmessi al server di backend. Ad esempio, se effettui la richiesta seguente che include un'intestazione:
curl -X GET -H 'Content-type:application/xml' http://www.example.com/v1/weather/forecastrss?w=12797282
In alternativa, invia una richiesta nel modulo seguente per includere un'intestazione e i dati del modulo:
curl -X POST -H "Content-type:application/json" -d \ '{"email" : "janetutorialxml@example.com", "firstName" : "Jane", "lastName" : "Tutorial", "userName" : "jtutorialxml" }' \ http://www.example.com/v1/register/user
In entrambi gli esempi, le intestazioni e i dati del modulo vengono passati senza modifiche al servizio di backend. Le
intestazioni sono rappresentate da variabili di flusso come request.headers.count
e
request.headers.names
. I dati del modulo sono rappresentati da variabili di flusso come
request.formparam.count
e request.formparam.names
.
Come vengono restituiti i dati di risposta?
Per impostazione predefinita, tutti i dati ricevuti da Apigee dal servizio di backend nella risposta vengono passati senza modifiche all'app che ha originato la richiesta. Come descritto in precedenza per la richiesta, i dati restituiti nella risposta sono accessibili tramite le variabili di flusso su Apigee. Per maggiori informazioni, consulta Riferimento per le variabili di flusso.
Accedi ai dati di richieste e risposte in un proxy API
In alcuni casi potresti voler modificare i dati delle richieste prima di inviarli al server di backend. Ad esempio:
- Per rimuovere le informazioni di sicurezza utilizzate da Apigee per convalidare le richieste. Queste informazioni non sono richieste dal servizio di backend.
- Per aggiungere dati inviati al servizio di backend, ad esempio per monitorare gli utenti o raccogliere analisi.
- Elaborare la richiesta in modo condizionale in base ai dati della richiesta. Ad esempio, un proxy API può avere più TargetEndpoint. Il TargetEndpoint utilizzato dalla richiesta è determinato dai dati della richiesta. Questi dati vengono quindi eliminati dalla richiesta prima di inviarli al servizio di backend.
Lo stesso vale per i dati nella risposta. Nell'ambito dell'elaborazione della risposta, il proxy API potrebbe voler modificare i dati prima di restituirli all'app richiedente.
Messaggi di richiesta di accesso
Puoi utilizzare i criteri per accedere a parti di un messaggio di richiesta e modificarle. Queste parti includono:
- Intestazioni
- I parametri di ricerca
- Parametri modulo
- Indirizzo IP di origine
- Corpo del messaggio HTTP
In un flusso normale, una volta elaborata la richiesta, il proxy invia la richiesta trasformata alla destinazione.
I criteri possono esaminare le variabili della richiesta, quindi trasformarla o rifiutarla in base ai contenuti di queste variabili. I criteri trasformano la richiesta impostando le variabili appropriate, ad esempio variabili corrispondenti alle intestazioni della richiesta.
Accedi ai messaggi di risposta
Utilizzando le variabili che si applicano al messaggio di risposta, i criteri possono accedere ai componenti del messaggio, tra cui l'intestazione, i parametri di ricerca e i parametri del modulo, l'indirizzo IP di origine, il corpo del messaggio HTTP e così via.
Il proxy riceve un messaggio di risposta, quindi applica una serie di criteri basati sulle condizioni valutate a partire dalla risposta, che possono modificare o trasformare la risposta.
I criteri possono esaminare le variabili di risposta, quindi trasformare o rifiutare la richiesta in base ai contenuti di queste variabili. I criteri trasformano la risposta impostando le variabili appropriate, ad esempio variabili corrispondenti alle intestazioni della risposta.
Criteri comuni per accedere alle variabili di flusso
Apigee definisce diversi criteri che puoi utilizzare per elaborare i dati di richiesta e risposta. Queste norme includono:
- CriterioAssignMessage: crea o modifica i messaggi di richiesta o risposta HTTP durante un flusso di proxy API. Inoltre, crea e compila le nuove variabili di flusso.
- Criterio ExtractVariables: estrae contenuti dai messaggi, inclusi intestazioni, percorsi URI, payload e parametri di ricerca, da utilizzare in un'istruzione di condizione. Il criterio applica quindi un pattern di testo ai contenuti del messaggio e, quando viene trovata una corrispondenza, viene impostata una variabile designata.
- Criteri JSONtoXML e criteri XMLtoJSON: convertono i messaggi da JSON (JavaScript Object Notation) nel formato Extensible Markup Language (XML) o viceversa.
- Criterio JavaCallout, criterio JavaScript, criterio PythonScript, criterio RegularExpressionProtection: questi criteri consentono di scrivere uno script per accedere alle variabili di flusso contenenti dati di richiesta e risposta.