Auf Flussvariablen in Node.js zugreifen

Sie sehen sich die Dokumentation zu Apigee Edge an.
Sehen Sie sich die Apigee X-Dokumentation an.
info

Einführung

Verwenden Sie das Modul apigee-access, um auf Apigee Edge-Flussvariablen in einer Node.js-Anwendung zuzugreifen. Das Modul bietet Methoden zum Abrufen, Festlegen und Löschen von Variablen. Außerdem gibt es eine praktische Methode zum Festlegen einer Ganzzahlvariablen.

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

Eine Einführung in das apigee-access-Modul und seine anderen Funktionen finden Sie unter Apigee-Access-Modul verwenden.

Beispiel

Angenommen, eine Edge-Richtlinie, die auf dem Pfad des Anfrageflusses ausgeführt wird, legt eine Variable namens AuthenticatedUserId fest. Mit dem folgenden Code wird auf diese Variable zugegriffen und sie in einem Log ausgegeben. Außerdem wird mit diesem Code eine Variable festgelegt. Sie können dann über eine Richtlinie auf diese Variable zugreifen, wie unten dargestellt.

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 zum Bereitstellen Folgendes:

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 die Richtlinie „AssignMessage“ 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>

Hängen Sie als Nächstes eine weitere AssignMessage-Richtlinie an den TargetEndpoint-Antwort-PreFlow 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 so aufrufen:

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

Wechseln Sie nun in der Verwaltungs-UI zur Seite des Zugriffsproxys und rufen Sie die Ansicht Develop auf. Klicken Sie auf Node.js-Logs, um die Logausgabe des Proxys anzusehen. Wenn der Proxy richtig konfiguriert ist, sehen Sie, dass die Variable userId festgelegt wurde. Außerdem sehen Sie in der cURL-Ausgabe im Terminalfenster, dass die Kopfzeile 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, das aus dem HTTP-Modul stammt.
  • name: (String) Der Name der abzurufenden Variablen.

Gibt zurück:

Ein String oder eine Zahl, je nachdem, welcher Typ mit „setVariable()“ festgelegt wurde, ob die Variable von Ihnen an anderer Stelle erstellt wurde oder ob sie durch eine Richtlinie erstellt wurde. Wenn Sie auf eine der vorkonfigurierten Edge-Variablen zugreifen, finden Sie eine Liste der Typen in der Variablenreferenz. Informationen zu Variablentypen, die von Richtlinien erstellt wurden, finden Sie im Thema zu den Richtlinienreferenzen.

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()“ löst eine Ausnahme aus, wenn Sie versuchen, eine davon festzulegen. Welche Variablen schreibgeschützt sind, erfahren Sie in der Variablenreferenz.

Parameter:

  • httpRequest: Das Anfrageobjekt, das aus dem HTTP-Modul stammt.
  • name: (String) Der Name der Variablen, die abgerufen werden soll.
  • value: kann eine Zahl, ein String, ein boolescher Wert, ein Nullwert oder eine undefiniert sein.

Beispiel:

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, bei der der Wertparameter zuerst in eine Ganzzahl umgewandelt und dann festgelegt wird.

Parameter:

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

Beispiel:

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 ist nicht zulässig. 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 Variablen, die gelöscht werden soll.

Beispiel:

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