Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Введение
Используйте модуль apigee-access для доступа к переменным потока Apigee Edge в приложении Node.js. Модуль содержит методы для получения , установки и удаления переменных. Он также имеет удобный метод для установки целочисленной переменной .
Переменные потока существуют в контексте потока API-прокси. Некоторые переменные «встроены» в Edge. Другие создаются при выполнении политик, и вы можете создавать свои собственные переменные. Переменные потока обычно используются для передачи данных от одной политики к другой и для установки условий в условных потоках. Для получения информации о переменных потока см. раздел «Переменные потока и условия» .
Для ознакомления с модулем apigee-access и его другими функциями см. раздел «Использование модуля apigee-access» .
Рабочий пример
Представьте, что политика Edge, работающая на пути потока запроса, устанавливает переменную с именем AuthenticatedUserId . Следующий код обращается к этой переменной и выводит её в лог. Кроме того, этот код устанавливает переменную. Затем вы можете получить доступ к этой переменной из политики, что мы покажем ниже.
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/');
Вы можете скопировать этот код в файл JavaScript, развернуть его в Edge и протестировать. Назовите файл server.js . Для развертывания используйте:
apigeetool deploynodeapp -u username -p password -o myorg -e test -n access -d . -m server.js -b /access
После развертывания приложения в Edge добавьте в поток запросов ProxyEndpoint политику AssignMessage со следующей конфигурацией:
<?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>
Далее, добавьте еще одну политику AssignMessage к предварительному потоку ответа TargetEnpoint:
<?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>
Вызвать прокси можно следующим образом:
curl -i http://myorg-test.apigee.net/access
Теперь перейдите на страницу прокси-сервера доступа в пользовательском интерфейсе управления и откройте окно «Разработка» . Нажмите «Журналы Node.js» , чтобы просмотреть вывод логов прокси-сервера. Если прокси-сервер настроен правильно, вы увидите, что переменная userId была установлена. Вы также увидите, что заголовок был установлен в выводе cURL в окне терминала:
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
Методы
получитьПеременная
var result = getVariable(httpRequest, name);
Получает именованную переменную.
Параметры:
-
httpRequest: Объект запроса, полученный из модуля http. -
name: (String) Имя переменной, которую нужно получить.
Возвращает:
В зависимости от типа переменной, установленной с помощью функции setVariable(), от того, была ли она создана вами в другом месте, или от типа, заданного политикой, это может быть строка или число. Если вы обращаетесь к одной из стандартных переменных Edge, список типов можно найти в справочнике по переменным . Для типов переменных, созданных политиками, обратитесь к соответствующему разделу справочника по политике.
Примеры:
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);
Устанавливает значение переменной. Некоторые переменные доступны только для чтения, и метод setVariable() генерирует исключение, если вы попытаетесь установить значение одной из них. Чтобы определить, какие переменные доступны только для чтения, см. Справочник по переменным .
Параметры:
-
httpRequest: Объект запроса, полученный из модуля http. -
name: (String) Имя переменной, которую нужно получить. -
value: может быть числом, строкой, логическим значением, null или undefined.
Пример:
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);
Метод setIntVariable() — это вспомогательный метод, который сначала преобразует параметр value в целое число, а затем устанавливает его значение.
Параметры:
-
httpRequest: Объект запроса, полученный из модуля http. -
name: (String) Имя переменной, которую нужно установить. -
value: Параметр значения должен быть строкой или числом.
Пример:
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
Удаляет именованную переменную. Удаление переменной только для чтения приводит к ошибке. Полный список переменных только для чтения см. в Справочнике по переменным .
deleteVariable(httpRequest, name);
Параметры:
-
httpRequest: Объект запроса, полученный из модуля http. -
name: (String) Имя переменной для удаления.
Пример:
apigee.deleteVariable(request, 'TestVariable'); // This will throw an exception because client.ip is a read-only variable. apigee.deleteVariable(request, 'client.ip');
Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Введение
Используйте модуль apigee-access для доступа к переменным потока Apigee Edge в приложении Node.js. Модуль содержит методы для получения , установки и удаления переменных. Он также имеет удобный метод для установки целочисленной переменной .
Переменные потока существуют в контексте потока API-прокси. Некоторые переменные «встроены» в Edge. Другие создаются при выполнении политик, и вы можете создавать свои собственные переменные. Переменные потока обычно используются для передачи данных от одной политики к другой и для установки условий в условных потоках. Для получения информации о переменных потока см. раздел «Переменные потока и условия» .
Для ознакомления с модулем apigee-access и его другими функциями см. раздел «Использование модуля apigee-access» .
Рабочий пример
Представьте, что политика Edge, работающая на пути потока запроса, устанавливает переменную с именем AuthenticatedUserId . Следующий код обращается к этой переменной и выводит её в лог. Кроме того, этот код устанавливает переменную. Затем вы можете получить доступ к этой переменной из политики, что мы покажем ниже.
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/');
Вы можете скопировать этот код в файл JavaScript, развернуть его в Edge и протестировать. Назовите файл server.js . Для развертывания используйте:
apigeetool deploynodeapp -u username -p password -o myorg -e test -n access -d . -m server.js -b /access
После развертывания приложения в Edge добавьте в поток запросов ProxyEndpoint политику AssignMessage со следующей конфигурацией:
<?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>
Далее, добавьте еще одну политику AssignMessage к предварительному потоку ответа TargetEnpoint:
<?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>
Вызвать прокси можно следующим образом:
curl -i http://myorg-test.apigee.net/access
Теперь перейдите на страницу прокси-сервера доступа в пользовательском интерфейсе управления и откройте окно «Разработка» . Нажмите «Журналы Node.js» , чтобы просмотреть вывод логов прокси-сервера. Если прокси-сервер настроен правильно, вы увидите, что переменная userId была установлена. Вы также увидите, что заголовок был установлен в выводе cURL в окне терминала:
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
Методы
получитьПеременная
var result = getVariable(httpRequest, name);
Получает именованную переменную.
Параметры:
-
httpRequest: Объект запроса, полученный из модуля http. -
name: (String) Имя переменной, которую нужно получить.
Возвращает:
В зависимости от типа переменной, установленной с помощью функции setVariable(), от того, была ли она создана вами в другом месте, или от типа, заданного политикой, это может быть строка или число. Если вы обращаетесь к одной из стандартных переменных Edge, список типов можно найти в справочнике по переменным . Для типов переменных, созданных политиками, обратитесь к соответствующему разделу справочника по политике.
Примеры:
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);
Устанавливает значение переменной. Некоторые переменные доступны только для чтения, и метод setVariable() генерирует исключение, если вы попытаетесь установить значение одной из них. Чтобы определить, какие переменные доступны только для чтения, см. Справочник по переменным .
Параметры:
-
httpRequest: Объект запроса, полученный из модуля http. -
name: (String) Имя переменной, которую нужно получить. -
value: может быть числом, строкой, логическим значением, null или undefined.
Пример:
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);
Метод setIntVariable() — это вспомогательный метод, который сначала преобразует параметр value в целое число, а затем устанавливает его значение.
Параметры:
-
httpRequest: Объект запроса, полученный из модуля http. -
name: (String) Имя переменной, которую нужно установить. -
value: Параметр значения должен быть строкой или числом.
Пример:
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
Удаляет именованную переменную. Удаление переменной только для чтения приводит к ошибке. Полный список переменных только для чтения см. в Справочнике по переменным .
deleteVariable(httpRequest, name);
Параметры:
-
httpRequest: Объект запроса, полученный из модуля http. -
name: (String) Имя переменной для удаления.
Пример:
apigee.deleteVariable(request, 'TestVariable'); // This will throw an exception because client.ip is a read-only variable. apigee.deleteVariable(request, 'client.ip');