Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. informacje.
Wprowadzenie
Moduł apigee-access
umożliwia dostęp do zmiennych przepływu Apigee Edge w aplikacji Node.js. Moduł zawiera metody uzyskiwania, ustawiania i usuwania zmiennych. Jest to też wygodny sposób ustawiania zmiennej liczby całkowitej.
Zmienne przepływu występują w kontekście procesu serwera proxy interfejsu API. Niektóre zmienne są wbudowane w Edge. Inne są tworzone podczas wykonywania zasad, a Ty możesz tworzyć własne zmienne. Zmienne przepływu służą zwykle do przekazywania danych między zasadami oraz do określania warunków w przepływach warunkowych. Informacje na temat zmiennych przepływu znajdziesz w artykule Zmienne i warunki przepływu.
Wprowadzenie do modułu apigee-access
i jego innych funkcji znajdziesz w artykule Korzystanie z modułu dostępu apigee.
Przykład roboczy
Załóżmy, że zasada brzegowa uruchomiona w ścieżce przepływu żądania ustawia zmienną o nazwie AuthenticatedUserId
. Poniższy kod uzyskuje dostęp do tej zmiennej i wyświetla ją w logu. Dodatkowo kod ten 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 plik server.js
. Aby ją wdrożyć, użyj:
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 do przepływu żądania ProxyEndpoint zasadę AssignMessage o tej konfiguracji:
<?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>
Możesz wywołać serwer proxy w ten sposób:
curl -i http://myorg-test.apigee.net/access
Teraz otwórz stronę serwera proxy dostępu w interfejsie zarządzania i wyświetl widok Develop (Programowanie). Kliknij Logi Node.js, aby wyświetlić dane wyjściowe logów z serwera proxy. Jeśli serwer proxy jest skonfigurowany poprawnie, zobaczysz, że ustawiono zmienną userId. Zobaczysz też, że nagłówek został ustawiony 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
getZmienna
var result = getVariable(httpRequest, name);
Pobiera zmienną nazwaną.
Parametry:
httpRequest
: obiekt żądania pochodzący z modułu http.name
: (ciąg znaków) nazwa zmiennej do pobrania.
Zwraca:
Ciąg lub liczba, w zależności od typu ustawionego za pomocą setvariable(), czas utworzenia przez Ciebie w innym miejscu lub czas utworzenia przez zasadę. Jeśli korzystasz z jednej z gotowych zmiennych Edge, listę typów znajdziesz w dokumentacji zmiennych. Typy zmiennych utworzone przez zasady znajdziesz w temacie dotyczącym konkretnych zasad.
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');
setZmienna
setVariable(httpRequest, name, value);
Ustawia zmienną. Niektóre zmienne są tylko do odczytu, a metoda setvariable() zgłasza wyjątek, jeśli spróbujesz ustawić jedną z nich. Aby określić, które zmienne są tylko do odczytu, zapoznaj się z dokumentacją zmiennych.
Parametry:
httpRequest
: obiekt żądania pochodzący z modułu http.name
: (ciąg znaków) nazwa zmiennej do pobrania.value
: może to być liczba, ciąg znaków, wartość logiczna, wartość null lub wartość nieokreślona.
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
setIntvariable(httpRequest, nazwa, wartość);
Metoda setIntvariable() jest wygodną metodą, która najpierw przekształca parametr value w liczbę całkowitą, a następnie ustawia go.
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);
deleteZmienna
Usuwa zmienną nazwaną. Usunięcie zmiennej tylko do odczytu jest wynikiem błędu. Pełną listę zmiennych tylko do odczytu znajdziesz w dokumentacji zmiennych.
deleteVariable(httpRequest, name);
Parametry:
httpRequest
: obiekt żądania pochodzący z modułu http.name
: (ciąg znaków) 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');