Accesso alle variabili di flusso in Node.js

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Introduzione

Utilizza il modulo apigee-access per accedere al flusso Apigee Edge variabili in un'applicazione Node.js. Il modulo presenta metodi per ottenere, impostare ed eliminare le variabili. Presenta inoltre un metodo pratico per impostare una variabile di numeri interi.

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

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

Esempio funzionante

Immagina che un criterio perimetrale in esecuzione sul percorso del flusso della richiesta imposti una variabile chiamata AuthenticatedUserId. Il seguente codice accede a tale variabile e la stampa in un log. Inoltre, questo codice imposta una variabile. Puoi quindi accedere alla 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 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 un criterioAssignMessage con quanto segue 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 criterioAssignMessage al preflusso 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

A questo punto, vai alla pagina del proxy di accesso nell'interfaccia utente di gestione e visualizza la Sviluppa. Fai clic su Node.js Logs per visualizzare l'output di log da il proxy. Se il proxy è configurato correttamente, 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);

Ottiene una variabile con nome.

Parametri:

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

Resi:

Una stringa o un numero, a seconda del tipo impostato con setVariable(), quando era creato da te altrove o quando è stato creato da una norma. Se accedi a uno dei Per le variabili perimetrali pronte all'uso, puoi trovare un elenco di tipi nel Riferimento alle variabili. Per i tipi di variabili create dai criteri, consulta l'argomento specifico di riferimento alle norme.

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 se provi a impostarne uno. Per determinare quali variabili sono di sola lettura, consulta la colonna Variabili Riferimento.

Parametri:

  • httpRequest: l'oggetto di 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 convenienza che prima costringe il parametro value a un numero intero e 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

Elimina una variabile con nome. L'eliminazione di una variabile di sola lettura è un errore. Per un di variabili di sola lettura, consulta Riferimento sulle variabili.

deleteVariable(httpRequest, name);

Parametri:

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