Uzyskiwanie dostępu do zmiennych przepływu w Node.js

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Wprowadzenie

Użyj modułu apigee-access, aby uzyskać dostęp do przepływu w Apigee Edge zmiennych w aplikacji Node.js. Zawiera on metody pobierania, ustawiania i usuwania zmiennych. Jest to też wygodny sposób ustawiania zmiennej liczby całkowitej.

Zmienne przepływu występują w kontekście przepływu serwera proxy interfejsu API. Niektóre zmienne są „wbudowane” do Edge. Inne są tworzone podczas wykonywania zasad. Możesz też tworzyć własne zmienne. Procedura Zmienne są zwykle używane do przekazywania danych z jednej zasady do drugiej oraz do ustawiania warunków w przepływach warunkowych. Informacje o zmiennych przepływu znajdziesz w sekcji Zmienne przepływu i .

Wprowadzenie do modułu apigee-access i innych funkcji znajdziesz w tych artykułach: Korzystanie z modułu apigee-access.

Przykład działania

Załóżmy, że zasada brzegowa działająca na ścieżce przepływu żądania ustawia zmienną o nazwie AuthenticatedUserId Poniższy kod uzyskuje dostęp do tej zmiennej i drukuje ją w log. Dodatkowo ten kod ustawia zmienną. Następnie możesz uzyskać dostęp do tej zmiennej z poziomu zasady, co pokazano poniżej.

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

Możesz skopiować ten kod do pliku JavaScript, wdrożyć go w Edge i wypróbować. Wywołaj funkcję server.js. Aby go wdrożyć:

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

Po wdrożeniu aplikacji w Edge dodaj zasadę AssignMessage z poniższym opisem w ramach procesu żądania 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>

Następnie dołącz inną zasadę AssignMessage do wstępnego przepływu odpowiedzi 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>

Serwer proxy możesz wywołać w ten sposób:

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

W interfejsie zarządzania otwórz stronę serwera proxy dostępu i wyświetl Widok Develop. Kliknij Node.js Logging, aby wyświetlić dane wyjściowe logów serwer proxy. Jeśli serwer proxy jest skonfigurowany poprawnie, zobaczysz, że ustawiona została zmienna userId. Informację o tym, że nagłówek został ustawiony, zobaczysz też w danych wyjściowych cURL w oknie terminala:

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

Metody


getVariable

var result = getVariable(httpRequest, name);

Pobiera zmienną nazwaną.

Parametry:

  • httpRequest: obiekt żądania pochodzący z modułu http.
  • name: (ciąg) nazwa zmiennej do pobrania.

Zwroty:

Ciąg znaków lub liczba w zależności od typu ustawionego za pomocą funkcji setZmienna(), gdy została utworzone przez Ciebie w innym miejscu lub w wyniku utworzenia go przez zasadę. Jeśli masz dostęp do jednej z Listę typów zmiennych znajdziesz w dokumentacji zmiennych. Typy zmiennych utworzonych przez zasady, zapoznaj się z odpowiednim tematem.

Przykłady:

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

Ustawia zmienną. Niektóre zmienne są tylko do odczytu, a metoda setZmienna() generuje możesz ustawić jeden z nich. Aby określić, które zmienne są tylko do odczytu, zapoznaj się z artykułem Zmienne Plik referencyjny.

Parametry:

  • httpRequest: obiekt żądania pochodzący z modułu http.
  • name: (ciąg) nazwa zmiennej do pobrania.
  • value: może być liczbą, ciągiem znaków, wartością logiczną, wartością null lub niezdefiniowaną.

Przykład:

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

setIntZmienna(httpRequest; nazwa; wartość);

Metoda setIntvariable() jest udogodnieniem, która najpierw wymusza zmianę parametru wartości na i ustawia ją.

Parametry:

  • httpRequest: obiekt żądania pochodzący z modułu http.
  • name: (ciąg znaków) nazwa zmiennej do ustawienia.
  • value: parametr wartości musi być ciągiem znaków lub liczbą.

Przykład:

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

Usuwa zmienną nazwaną. Usunięcie zmiennej tylko do odczytu powoduje błąd. Pełną listę listę zmiennych tylko do odczytu, zobacz omówienie zmiennych.

deleteVariable(httpRequest, name);

Parametry:

  • httpRequest: obiekt żądania pochodzący z modułu http.
  • name: (ciąg) nazwa zmiennej do usunięcia.

Przykład:

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