Auf Flussvariablen in Node.js zugreifen

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Einführung

Verwenden Sie das Modul apigee-access, um auf Apigee Edge-Flussvariablen in einer Node.js-Anwendung zuzugreifen. Das Modul enthält Methoden zum Abrufen, Festlegen und Löschen von Variablen. Es bietet auch eine praktische Methode zum Festlegen einer Ganzzahlvariablen.

Flussvariablen existieren im Kontext eines API-Proxy-Ablaufs. Einige Variablen sind in Edge "eingebunden". Andere werden bei der Ausführung von Richtlinien erstellt. Sie können auch Ihre eigenen Variablen erstellen. Flussvariablen werden in der Regel verwendet, um Daten von einer Richtlinie an eine andere zu übergeben und Bedingungen in bedingten Abläufen festzulegen. Informationen zu Flussvariablen finden Sie unter Ablaufvariablen und Bedingungen.

Eine Einführung in das Modul apigee-access und andere Features finden Sie unter Apigee-Zugriffsmodul verwenden.

Funktionierendes Beispiel

Stellen Sie sich vor, eine Edge-Richtlinie, die auf dem Anfrageflusspfad ausgeführt wird, eine Variable namens AuthenticatedUserId festlegt. Mit dem folgenden Code wird auf diese Variable zugegriffen und sie in einem Log ausgegeben. Zusätzlich legt dieser Code eine Variable fest. Sie können dann über eine Richtlinie auf diese Variable zugreifen, wie unten veranschaulicht.

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

Sie können diesen Code in eine JavaScript-Datei kopieren, in Edge bereitstellen und ausprobieren. Rufen Sie die Datei server.js auf. Verwenden Sie zur Bereitstellung:

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

Nachdem Sie die Anwendung in Edge bereitgestellt haben, fügen Sie dem ProxyEndpoint-Anfrageablauf eineAssignMessage-Richtlinie mit der folgenden Konfiguration hinzu:

<?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>

Fügen Sie als Nächstes eine weitere "AssignMessage"-Richtlinie an den Preflow für die TargetEndpoint-Antwort an:

<?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>

Sie können den Proxy wie folgt aufrufen:

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

Wechseln Sie nun in der Verwaltungs-UI zur Seite des Zugriffs-Proxys und rufen Sie die Ansicht Entwickeln auf. Klicken Sie auf Node.js-Logs, um die Logausgabe vom Proxy anzusehen. Wenn der Proxy richtig konfiguriert ist, sehen Sie, dass die Variable „userId“ festgelegt wurde. Sie können auch sehen, dass der Header in der cURL-Ausgabe in Ihrem Terminalfenster festgelegt wurde:

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

Methoden


getVariable

var result = getVariable(httpRequest, name);

Ruft eine benannte Variable ab.

Parameter:

  • httpRequest: Das Anfrageobjekt aus dem HTTP-Modul.
  • name: (String) Der Name der abzurufenden Variable.

Gibt zurück:

Ein String oder eine Zahl, je nachdem, welcher Typ mit „setVariable()“ festgelegt wurde, wann er an anderer Stelle von Ihnen oder durch eine Richtlinie erstellt wurde. Wenn Sie auf eine der vorkonfigurierten Edge-Variablen zugreifen, finden Sie eine Liste von Typen in der Variablenreferenz. Informationen zu von Richtlinien erstellten Variablentypen finden Sie im entsprechenden Richtlinienreferenzthema.

Beispiele:

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

Legt eine Variable fest. Einige Variablen sind schreibgeschützt und die Methode setVariable() gibt eine Ausnahme aus, wenn Sie versuchen, eine davon festzulegen. Informationen dazu, welche Variablen schreibgeschützt sind, finden Sie unter Variablenreferenz.

Parameter:

  • httpRequest: Das Anfrageobjekt aus dem HTTP-Modul.
  • name: (String) Der Name der abzurufenden Variable.
  • value: Kann eine Zahl, ein String, ein boolescher Wert, null oder nicht definiert sein.

Example:

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

Die Methode setIntVariable() ist eine praktische Methode, die zuerst den Wertparameter in eine Ganzzahl erzwingt und dann festlegt.

Parameter:

  • httpRequest: Das Anfrageobjekt aus dem HTTP-Modul.
  • name: (String) Der Name der festzulegenden Variable.
  • value: Der Wertparameter muss ein String oder eine Zahl sein.

Example:

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

Löscht eine benannte Variable. Das Löschen einer schreibgeschützten Variablen führt zu einem Fehler. Eine vollständige Liste der schreibgeschützten Variablen finden Sie in der Variablenreferenz.

deleteVariable(httpRequest, name);

Parameter:

  • httpRequest: Das Anfrageobjekt aus dem HTTP-Modul.
  • name: (String) Der Name der zu löschenden Variable.

Example:

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