Accesso alle variabili di flusso in Node.js

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

Introduzione

Utilizza il modulo apigee-access per accedere alle variabili di flusso Apigee Edge in un'applicazione Node.js. Il modulo include metodi per ottenere, impostare ed eliminare le variabili. Offre inoltre un metodo pratico per impostare una variabile intera.

Le variabili di flusso esistono nel contesto di un flusso proxy API. Alcune variabili sono "integrate" in Edge. Altre vengono create quando i criteri vengono eseguiti e puoi creare le tue variabili. Le variabili di flusso vengono generalmente utilizzate per passare i dati da un criterio a un altro e per impostare le condizioni nei flussi condizionali. Per informazioni sulle variabili di flusso, consulta Variabili e condizioni di flusso.

Per un'introduzione al modulo apigee-access e alle sue altre funzionalità, consulta Utilizzo del modulo apigee-access.

Esempio funzionante

Immagina che un criterio perimetrale in esecuzione nel percorso del flusso di richiesta imposti una variabile denominata AuthenticatedUserId. Il codice seguente accede a quella variabile e la stampa in un log. Inoltre, questo codice imposta una variabile. Puoi quindi accedere a questa variabile da un criterio, come illustrato di seguito.

var http = require('http');
var apigee = require('apigee-access');

http.createServer(function (request, response) {
  // The request parameter must be a request object that came from the http module
  var userId = apigee.getVariable(request, 'AuthenticatedUserId');
  apigee.setVariable(request, "custom.foo", "Bar");
  console.log('Authenticated Apigee User ID is %s', userId);
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

Puoi copiare questo codice in un file JavaScript, eseguirne il deployment su Edge e provare. Chiama il file server.js. Per eseguirne il deployment, utilizza:

apigeetool deploynodeapp -u username -p password -o myorg -e test -n access -d . -m server.js -b /access

Dopo aver eseguito il deployment dell'applicazione su Edge, aggiungi un criterio AttributionMessage con la seguente configurazione al flusso di richiesta ProxyEndpoint:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="AddUserId">
    <DisplayName>AddUserId</DisplayName>
    <FaultRules/>
    <Properties/>  
    <AssignVariable>
        <Name>AuthenticatedUserId</Name>
        <Value>ntesla</Value>
        <Ref/>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

Quindi, collega un altro criterio di AssegnaMessage al pre-flusso di risposta TargetEndpoint:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="SetHeader">
    <DisplayName>SetHeader</DisplayName>
    <FaultRules/>
    <Properties/>
    <Set>
        <Headers>
            <Header name="MySpecialHeader">{custom.foo}</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

Puoi chiamare il proxy nel seguente modo:

curl -i http://myorg-test.apigee.net/access

Ora, vai alla pagina del proxy di accesso nell'interfaccia utente di gestione e apri la visualizzazione Sviluppo. Fai clic su Log Node.js per visualizzare l'output di log del proxy. Se il proxy è configurato correttamente, vedrai che la variabile userId è stata impostata. Vedrai anche che l'intestazione è stata impostata nell'output cURL nella finestra del terminale:

HTTP/1.1 200 OK

Content-Type: text/plain
Date: Tue, 27 05 2014 23:20:52 GMT
MySpecialHeader: Bar
Content-Length: 12
Connection: keep-alive

Metodi


getVariable

var result = getVariable(httpRequest, name);

Restituisce una variabile con nome.

Parametri:

  • httpRequest: l'oggetto della richiesta che deriva dal modulo http.
  • name: (stringa) il nome della variabile da recuperare.

Resi:

Una stringa o un numero, a seconda del tipo impostato utilizzando setVariable(), quando è stato creato da te altrove oppure quando è stato creato da un criterio. Se accedi a una delle variabili Edge pronte all'uso, puoi trovare un elenco dei tipi in Riferimento variabili. Per i tipi di variabili creati dai criteri, consulta l'argomento specifico di riferimento per i criteri.

Esempi:

var apigee = require('apigee-access');
    // "httpRequest" must be a request object that came from the http module
    var val1 = apigee.getVariable(request, 'TestVariable');
    var val2 = apigee.getVariable(request, 'request.client.ip');

setVariable

setVariable(httpRequest, name, value);

Imposta una variabile. Alcune variabili sono di sola lettura e, se provi a impostarne una, il metodo setVariable() genera un'eccezione. Per determinare quali variabili sono di sola lettura, consulta la sezione Riferimento variabili.

Parametri:

  • httpRequest: l'oggetto della richiesta che deriva dal modulo http.
  • name: (stringa) il nome della variabile da recuperare.
  • value: può essere un numero, una stringa, un valore booleano, un valore nullo o un valore non definito.

Esempio:

var apigee = require('apigee-access');
    apigee.setVariable(request, 'TestVariable', 'bar');
    // This will throw an exception because client.ip is read-only.
    apigee.setVariable(request, 'client.ip');
    

setIntVariable

setIntVariable(httpRequest, name, value);

Il metodo setIntVariable() è un metodo di convenienza che forza prima il parametro value a un numero intero per poi impostarlo.

Parametri:

  • httpRequest: l'oggetto della richiesta che deriva dal modulo http.
  • name: (stringa) il nome della variabile da impostare.
  • value: il parametro del valore deve essere una stringa o un numero.

Esempio:

var apigee = require('apigee-access');
// Convert "123" to an integer and set it
apigee.setIntVariable(request, 'TestVariable', '123');
// Use something that's already a number
apigee.setIntVariable(request, 'TestVariable2', 42);

deleteVariable

Elimina una variabile con nome. Eliminare una variabile di sola lettura è un errore. Per un elenco completo delle variabili di sola lettura, consulta la sezione Riferimento variabili.

deleteVariable(httpRequest, name);

Parametri:

  • httpRequest: l'oggetto della richiesta che deriva dal modulo http.
  • name: (stringa) il nome della variabile da eliminare.

Esempio:

  apigee.deleteVariable(request, 'TestVariable');
    // This will throw an exception because client.ip is a read-only variable.
    apigee.deleteVariable(request, 'client.ip');