Variabili di richiesta e risposta

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Quando effettui una richiesta a un proxy API, puoi trasmettere tutte o alcune delle seguenti informazioni, a seconda della configurazione del proxy API:

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

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

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

L'immagine seguente 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. Vengono forniti esempi di endpoint proxy e di destinazione.

Per questo proxy API:

  • Host virtuale del proxy API: "default"
  • Dominio definito dall'host virtuale: "http://myOrg-prod.apigee.net"
  • Percorso di base del proxy: "/v1/weather"
  • TargetEndpoint specificato dalla regola di instradamento: "default"
  • URL di destinazione: "http://weather.yahooapis.com"

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

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: "GET"
  • proxy.basepath: "/v1/weather"
  • proxy.pathsuffix: "forecastrss"
  • 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}

Nota come la risorsa e i parametri di query specificati nella richiesta vengono inclusi automaticamente nella richiesta al server di backend. Dalla definizione di TargetEndpoint, la richiesta assume quindi il seguente formato:

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

Come i parametri di query, tutte le intestazioni o i parametri del modulo inclusi nella richiesta al proxy API vengono trasmessi al server di backend. Ad esempio, effettua 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 formato riportato di seguito per includere un'intestazione e 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 trasmessi 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.

In che modo vengono restituiti i dati della risposta?

Per impostazione predefinita, tutti i dati ricevuti da Edge dal servizio di backend nella risposta vengono trasmessi senza modifiche 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 Edge. Per saperne di più, consulta la documentazione di riferimento sulle variabili di flusso.

Accedere ai dati di richiesta e risposta in un proxy API

In molti casi, potresti voler modificare i dati della richiesta prima di inviarli al server di backend server. 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 raccogliere dati di analisi.
  • Per 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. Quindi, rimuovi questi dati dalla richiesta prima di inviarla 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.

Accedere ai messaggi di richiesta

Puoi utilizzare le policy per accedere e modificare parti di un messaggio di richiesta. Queste parti 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 alla destinazione.

Le policy possono esaminare le variabili di richiesta, quindi trasformare o rifiutare la richiesta in base al contenuto di queste variabili. Le policy 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, le policy 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 messaggio HTTP e così via.

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

Le policy possono esaminare le variabili di risposta, quindi trasformare o rifiutare la richiesta in base al contenuto di queste variabili. Le policy trasformano la risposta impostando le variabili appropriate, ad esempio le variabili corrispondenti alle intestazioni della risposta.

Policy comuni per accedere alle variabili di flusso

Edge definisce diverse policy che puoi utilizzare per elaborare i dati di richiesta e risposta. Queste policy includono:

  • Policy AssignMessage: crea o modifica i messaggi di richiesta o risposta HTTP durante un flusso di proxy API. Crea e popola anche nuove variabili di flusso.
  • Policy ExtractVariables: estrae i contenuti dai messaggi, inclusi intestazioni, percorsi URI, payload e parametri di query, da utilizzare in un'istruzione condizionale. La policy applica quindi un pattern di testo ai contenuti del messaggio e, se trova una corrispondenza, imposta una variabile designata.
  • Policy JSONtoXML e policy XMLtoJSON: converte i messaggi dal formato JavaScript Object Notation (JSON) al formato Extensible Markup Language (XML) o viceversa.
  • Policy JavaCallout, policy JavaScript, policy PythonScript, policy RegularExpressionProtection: queste policy ti consentono di scrivere uno script per accedere alle variabili di flusso contenenti dati di richiesta e risposta.