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