Variabili di richiesta e risposta

Questa pagina si applica a Apigee e Apigee ibridi.

Visualizza 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 inalterati dal ProxyEndpoint al Endpoint di destinazione. Quindi, quando TargetEndpoint effettua la richiesta al server di backend, le informazioni presenti nella richiesta originale vengono passate al servizio di backend.

Lo stesso vale per la risposta ricevuta da Apigee dal servizio di backend. Di Per impostazione predefinita, tutti i dati ricevuti nella risposta vengono passati senza modifiche all'app che ha originato richiesta.

Come vengono passati i dati delle richieste al backend server?

L'immagine seguente mostra una definizione del proxy API:

Richiesta dal client HTTP che passa attraverso l'endpoint proxy al TargetEndpoint sulla
  per raggiungere il servizio HTTP. Esempi di endpoint proxy e endpoint di destinazione:
  fornito.

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: 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 richiesta:

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

Tieni presente che i parametri della risorsa e della query specificati nella richiesta vengono inclusi automaticamente una richiesta al server di backend. Dalla definizione di TargetEndpoint, la richiesta ha il formato:

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

Analogamente ai parametri di query, qualsiasi intestazione o parametro del modulo che includi nella richiesta all'API vengono passate al server di backend. Ad esempio, se effettui la richiesta 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, 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. La 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, vengono passati tutti i dati ricevuti da Apigee dal servizio di backend nella risposta senza modifiche all'app che ha originato la richiesta. Come descritto sopra per la richiesta, i dati restituiti nella risposta sono accessibili attraverso le variabili di flusso su Apigee. Per ulteriori informazioni, consulta Riferimento per le variabili di flusso.

Accedere ai dati di richiesta e risposta in un proxy API

Esistono molte volte in cui potresti voler modificare i dati delle richieste prima di inviarli al backend o server web. Ad esempio:

  • Per rimuovere le informazioni di sicurezza utilizzate da Apigee per convalidare le richieste. Queste informazioni non sono richiesta dal servizio di backend.
  • Per aggiungere dati inviati al servizio di backend, ad esempio per monitorare gli utenti o raccogliere Analytics.
  • Elaborare la richiesta in modo condizionale in base ai dati della richiesta. Ad esempio, un proxy API può hanno più TargetEndpoint. Il TargetEndpoint utilizzato dalla richiesta è determinato dalla richiesta e i dati di Google Cloud. 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 potresti 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
  • Parametri di query
  • Parametri modulo
  • Indirizzo IP di origine
  • Corpo del messaggio HTTP

In un flusso normale, una volta elaborata la richiesta, il proxy invia l'email trasformata richiesta alla destinazione.

I criteri possono esaminare le variabili della richiesta, quindi trasformarla o rifiutarla in base contenuti di tali variabili. I criteri trasformano la richiesta impostando le variabili appropriate, ad esempio variabili corrispondenti alle intestazioni della richiesta.

Accedi ai messaggi di risposta

Se utilizzi le variabili che si applicano al messaggio di risposta, i criteri possono accedere ai componenti del messaggio tra cui intestazione, parametri di ricerca e parametri del modulo, indirizzo IP di origine, HTTP corpo del messaggio e così via.

Il proxy riceve un messaggio di risposta, quindi applica una serie di criteri in base al condizioni valutate nella risposta, che possono modificare o trasformare la risposta.

I criteri possono esaminare le variabili di risposta, quindi trasformare o rifiutare la richiesta in base contenuti di tali variabili. I criteri trasformano la risposta impostando le variabili appropriate, ad esempio variabili corrispondenti alle intestazioni delle risposte.

Criteri comuni per accedere alle variabili di flusso

Apigee definisce diversi criteri che puoi utilizzare per elaborare i dati di richiesta e risposta. Questi le norme includono:

  • CriterioAssignMessage: crea o modifica i messaggi di richiesta o di risposta HTTP durante un proxy API flusso di lavoro. Inoltre, crea e compila le nuove variabili di flusso.
  • Criterio ExtractVariables: estrae contenuti dai messaggi, inclusi intestazioni, percorsi URI, payload e parametri di ricerca, per utilizzarli in un'istruzione di condizione. Il criterio applica quindi un pattern di testo a dei contenuti di un messaggio e, quando viene trovata una corrispondenza, viene impostata una variabile.
  • Criteri JSONtoXML e criteri XMLtoJSON: Convertire i messaggi da JavaScript Object Notation (JSON) al linguaggio di markup estensibile (XML) o viceversa.
  • criterio JavaCallout, criterio JavaScript, criterio PythonScript, Criterio RegularExpressionProtection: questi criteri ti consentono di scrivere uno script per accedere alle variabili di flusso contenente i dati di richiesta e risposta.