Auf Flussvariablen in Node.js zugreifen

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

Einführung

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

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

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

Arbeitsbeispiel

Stellen Sie sich vor, dass eine Edge-Richtlinie, die auf dem Anfrageflusspfad ausgeführt wird, eine Variable mit dem Namen AuthenticatedUserId Mit dem folgenden Code wird auf diese Variable zugegriffen und sie in einem Protokoll. Außerdem wird mit diesem Code eine Variable festgelegt. Sie können dann über eine Richtlinie auf diese Variable zugreifen, Dies wird im Folgenden erläutert.

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 Methode Datei server.js. 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 eineAssignMessage-Richtlinie mit dem folgenden Code hinzu: Konfiguration des ProxyEndpoint-Anfrageablaufs:

<?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 weitereAssignMessage-Richtlinie an den Preflow der 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

Rufen Sie nun in der Verwaltungsoberfläche die Seite des Zugriffsproxys auf und rufen Sie Ansicht Develop und Klicken Sie auf Node.js-Logs, um die Logausgabe von den Proxy. Wenn der Proxy richtig konfiguriert ist, sehen Sie, dass die Variable userId festgelegt wurde. Sie sehen auch, 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, das aus dem HTTP-Modul stammt.
  • name: (String) Der Name der abzurufenden Variablen.

Gibt zurück:

Ein String oder eine Zahl, je nach Typ, der mit setVariable() zum Zeitpunkt der die Sie an anderer Stelle oder durch eine Richtlinie erstellt haben. Wenn Sie auf eines der Sofort einsatzbereite Edge-Variablen finden Sie in der Variablenreferenz. Für Variablentypen die von Richtlinien erstellt wurden, verweisen Sie auf das entsprechende 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() löst eine Fehlermeldung aus. wenn Sie versuchen, eine davon festzulegen. Informationen dazu, welche Variablen schreibgeschützt sind, finden Sie unter die Variablen Referenz.

Parameter:

  • httpRequest: Das Anfrageobjekt, das aus dem HTTP-Modul stammt.
  • name: (String) Der Name der abzurufenden Variablen.
  • 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 setIntVariable()-Methode ist eine praktische Methode, mit der der Wertparameter zuerst in und legt sie dann fest.

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 ein Fehler. Eine vollständige Eine Liste der schreibgeschützten Variablen finden Sie in der Variablenreferenz.

deleteVariable(httpRequest, name);

Parameter:

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

Beispiel:

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