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');