Variabili di richiesta e risposta

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

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

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

Per impostazione predefinita, tutti i dati di una richiesta vengono trasmessi invariati da ProxyEndpoint a TargetEndpoint. Pertanto, quando TargetEndpoint invia la richiesta al server di backend, tutte le informazioni nella richiesta originale vengono trasmesse 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 trasmessi invariati all'app che ha generato la richiesta.

In che modo i dati della richiesta vengono trasmessi al server di backend?

L'immagine seguente mostra una definizione di proxy API:

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

Per questo proxy API:

  • Host virtuale del proxy API: default
  • Dominio definito dai nomi host del gruppo di ambienti: http://www.example.com
  • Percorso base del proxy: /v1/weather
  • TargetEndpoint specificato dalla regola di routing: default
  • URL target: http://weather.yahooapis.com

Un'app client invia una richiesta GET al proxy API utilizzando il seguente curl comando:

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

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

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

Tieni presente che i parametri di risorsa e query specificati nella richiesta vengono inclusi automaticamente nella richiesta al server di backend. Dalla definizione di TargetEndpoint, la richiesta assume quindi la forma:

curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282

Come i parametri di query, eventuali intestazioni o parametri di modulo inclusi nella richiesta all'API proxy vengono trasmessi al server di backend. Ad esempio, invii la richiesta riportata di seguito che include un'intestazione:

curl -X GET -H 'Content-type:application/xml' http://www.example.com/v1/weather/forecastrss?w=12797282

In alternativa, una richiesta nel modulo di seguito 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 trasmessi invariati 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 trasmessi immutati all'app che ha generato la richiesta. Come descritto sopra per la richiesta, i dati restituiti nella risposta sono accessibili tramite le variabili di flusso su Apigee. Per ulteriori informazioni, consulta la sezione Riferimento alle variabili di flusso.

Accedere ai dati di richiesta e risposta in un proxy API

Spesso è necessario modificare i dati della richiesta prima di inviarli al server di backend. Ad esempio:

  • Per rimuovere le informazioni sulla sicurezza utilizzate da Apigee per convalidare le richieste. Queste informazioni non sono obbligatoriamente richieste dal servizio di backend.
  • Per aggiungere i dati inviati al servizio di backend, ad esempio per monitorare gli utenti o raccogliere informazioni.
  • Per elaborare la richiesta in modo condizionale in base ai dati della richiesta. Ad esempio, un proxy API può avere più TargetEndpoint. L'endpoint Target utilizzato dalla richiesta è determinato dai dati della richiesta. Poi rimuovi questi dati 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 e modificare parti di un messaggio di richiesta. Questi componenti includono:

  • Intestazioni
  • Parametri di query
  • Parametri del modulo
  • Indirizzo IP di origine
  • Corpo del messaggio HTTP

In un flusso normale, una volta elaborata la richiesta, il proxy invia la richiesta trasformata al target.

Le norme possono esaminare le variabili di richiesta, quindi trasformare o rifiutare la richiesta in base al contenuto di queste variabili. I criteri trasformano la richiesta impostando le variabili appropriate, ad esempio le variabili 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 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, in base alle condizioni valutate sulla risposta, che possono modificarla o trasformarla.

I criteri possono esaminare le variabili di risposta, quindi trasformare o rifiutare la richiesta in base al contenuto di queste variabili. I criteri trasformano la risposta impostando le variabili appropriate, ad esempio le variabili corrispondenti alle intestazioni di 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:

  • Criterio AssignMessage: crea o modifica i messaggi di richiesta o risposta HTTP durante un flusso di proxy API. Inoltre, crea e compila nuove variabili di flusso.
  • Norma ExtractVariables: estrae i contenuti dai messaggi, tra cui intestazioni, percorsi URI, payload e parametri di ricerca, per utilizzarli in una dichiarazione di condizione. La norma applica quindi un pattern di testo ai contenuti del messaggio e, quando trova una corrispondenza, imposta una variabile designata.
  • Criterio JSONtoXML e Criterio XMLtoJSON: converti i messaggi da JSON (JavaScript Object Notation) al formato XML (extensible markup language) o viceversa.
  • JavaCallout policy, JavaScript policy, PythonScript policy, RegularExpressionProtection policy: questi criteri ti consentono di scrivere uno script per accedere alle variabili di flusso contenenti i dati di richiesta e risposta.