Accesso alle variabili di flusso in Node.js

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

Introduzione

Utilizza il modulo apigee-access per accedere alle variabili del flusso di Apigee Edge in un'applicazione Node.js. Il modulo dispone di metodi per ottenere, impostare ed eliminare le variabili. Dispone inoltre di 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 durante l'esecuzione dei criteri e puoi creare le tue variabili. Le variabili di flusso vengono in genere utilizzate per passare dati da un criterio a un altro e per impostare le condizioni nei flussi condizionali. Per informazioni sulle variabili di flusso, consulta la sezione VARIABILI E CONDIZIONI DI FLUSSO.

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

Esempio di funzionamento

Immagina che un criterio perimetrale in esecuzione sul percorso del flusso della richiesta imposti una variabile denominata AuthenticatedUserId. Il codice seguente accede a questa 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, eseguirlo in Edge e provarlo. 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 in Edge, aggiungi un criterio AssignMessage con la seguente configurazione al flusso di richieste 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 AssignMessage 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 come segue:

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

Ora vai alla pagina del proxy di accesso nell'interfaccia utente di gestione e visualizza la vista Sviluppa. Fai clic su Log Node.js per visualizzare l'output del 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 denominata.

Parametri:

  • httpRequest: l'oggetto richiesta proveniente 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 o quando è stato creato da un criterio. Se accedi a una delle variabili Edge predefinite, puoi trovare un elenco di tipi nel Riferimento alle variabili. Per i tipi di variabili creati dai criteri, consulta l'argomento di riferimento specifico dei 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 il metodo setVariable() genera un'eccezione se provi a impostarne una. Per determinare quali variabili sono di sola lettura, consulta il riferimento alle variabili.

Parametri:

  • httpRequest: l'oggetto richiesta proveniente dal modulo http.
  • name: (stringa) il nome della variabile da recuperare.
  • value: può essere un numero, una stringa, un valore booleano, nullo o 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 utilità che prima forza il parametro valore in un numero intero e poi lo imposta.

Parametri:

  • httpRequest: l'oggetto di richiesta proveniente dal modulo http.
  • name: (stringa) il nome della variabile da impostare.
  • value: il parametro 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

Consente di eliminare una variabile denominata. È un errore eliminare una variabile di sola lettura. Per un elenco completo delle variabili di sola lettura, consulta il riferimento alle variabili.

deleteVariable(httpRequest, name);

Parametri:

  • httpRequest: l'oggetto richiesta proveniente 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');