Variabili di richiesta e risposta

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Quando effettui una richiesta a un proxy API, puoi passare una o tutte le seguenti informazioni, a seconda della modalità di configurazione del proxy API:

  • Intestazioni delle richieste
  • Parametri di query
  • Dati modulo
  • Payload XML o JSON
  • URI delle risorse

Per impostazione predefinita, tutti i dati di una richiesta vengono passati senza modifiche da ProxyEndpoint a 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 Edge 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 i dati delle richieste vengono passati al server di backend?

La seguente immagine mostra una definizione di proxy API:

Richiesta dal client HTTP che passa attraverso l'endpoint proxy all'endpoint di destinazione sul backend per raggiungere il servizio HTTP. Sono forniti esempi di endpoint proxy ed endpoint di destinazione.

Per questo proxy API:

  • Host virtuale proxy API: "predefinito"
  • Dominio definito dall'host virtuale: "http://myOrg-prod.apigee.net"
  • Percorso di base 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://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

Tieni presente che questa richiesta contiene la risorsa "forecastrss" e un parametro di query, w. Edge 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: "SCARICA"
  • proxy.basepath: "/v1/meteo"
  • proxy.pathsuffix: "previsioni"
  • request.querystring: "w=12797282"

TargetEndpoint effettua quindi una richiesta al servizio di backend utilizzando le informazioni della richiesta:

{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}

Osserva come i parametri delle risorse e delle query specificati nella richiesta vengono inclusi automaticamente nella richiesta al server di backend. Dalla definizione di TargetEndpoint, la richiesta ha quindi il seguente 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, puoi effettuare la richiesta riportata di seguito che include un'intestazione:

curl -X GET -H 'Content-type:application/xml' http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

Oppure una richiesta nel seguente modulo 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://myOrg-prod.apigee.net/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 delle risposte?

Per impostazione predefinita, tutti i dati ricevuti da Edge 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 variabili di flusso su Edge. Per ulteriori informazioni, consulta la documentazione di riferimento sulle variabili di flusso.

Accesso ai dati delle richieste e delle risposte in un proxy API

In molti casi è necessario modificare i dati delle richieste prima di inviarli al server di backend. Ad esempio:

  • Per rimuovere le informazioni di sicurezza utilizzate da Edge 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 per raccogliere dati e analisi.
  • Elaborare in modo condizionale la richiesta 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. Puoi quindi eliminare questi dati dalla richiesta prima di inviarli al servizio di backend.

Lo stesso vale per i dati nella risposta. Durante l'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. tra cui:

  • Intestazioni
  • 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 di richiesta, quindi trasformarla o rifiutarla in base ai contenuti di queste variabili. I criteri trasformano la richiesta impostando le variabili appropriate, ad esempio variabili di esempio corrispondenti alle intestazioni della richiesta.

Accedere 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 query 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 in base alla 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 di esempio corrispondenti alle intestazioni della risposta.

Criteri comuni per l'accesso alle variabili di flusso

Edge definisce diversi criteri che puoi utilizzare per elaborare i dati delle richieste e delle risposte. Questi criteri includono: