Accesso alle variabili di flusso in Node.js

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

Introduzione

Utilizza il modulo apigee-access per accedere alle variabili di flusso di Apigee Edge in un'applicazione Node.js. Il modulo ha metodi per recuperare, impostare ed eliminare le variabili. Ha anche 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 vengono eseguite le policy e puoi creare le tue variabili. Le variabili di flusso vengono in genere utilizzate per passare i dati da una policy all'altra e per impostare le condizioni nei flussi condizionali. Per informazioni sulle variabili di flusso, consulta Variabili di flusso e condizioni.

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

Esempio pratico

Supponiamo che una policy Edge in esecuzione nel percorso del flusso di richiesta imposti una variabile denominata AuthenticatedUserId. Il seguente codice accede a questa variabile e la stampa in un log. Inoltre, questo codice imposta una variabile. Puoi quindi accedere a questa variabile da una policy, 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 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 su Edge, aggiungi una policy AssignMessage 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'altra policy AssignMessage al preflow 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 visualizza la visualizzazione Sviluppa. Fai clic su Log Node.js per visualizzare l'output dei 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);

Recupera una variabile denominata.

Parametri:

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

Valori restituiti:

Una stringa o un numero, a seconda del tipo impostato utilizzando setVariable(), quando è stato creato da te altrove o quando è stato creato da una policy. Se stai accedendo a una delle variabili Edge predefinite, puoi trovare un elenco di tipi nel riferimento alle variabili. Per i tipi di variabili creati dalle policy, consulta l'argomento di riferimento della policy specifica.

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 tenti di impostarne una. Per determinare quali variabili sono di sola lettura, consulta il riferimento alle variabili.

Parametri:

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

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 pratico che prima converte il parametro value in un numero intero e poi lo imposta.

Parametri:

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