Estás consultando la documentación de Apigee Edge.
Consulta la
documentación de Apigee X. Información
Introducción
Usa el módulo apigee-access
para acceder a las variables de flujo de Apigee Edge en una aplicación de Node.js. El módulo tiene métodos para obtener, configurar y borrar variables. También cuenta con un método de conveniencia para configurar una variable de número entero.
Las variables de flujo existen dentro del contexto de un flujo del proxy de API. Algunas variables están "integradas" en Edge. Otras se crean cuando se ejecutan las políticas, y puedes crear tus propias variables. Por lo general, las variables de flujo se usan para pasar datos de una política a otra y para establecer condiciones en flujos condicionales. Para obtener información sobre las variables de flujo, consulta Variables y condiciones de flujo.
Para obtener una introducción al módulo apigee-access
y sus otras funciones, consulta Usa el módulo Apigee-access.
Ejemplo de trabajo
Imagina que una política perimetral que se ejecuta en la ruta del flujo de la solicitud establece una variable llamada AuthenticatedUserId
. El siguiente código accede a esa variable y la imprime en un registro. Además, este código establece una variable. Luego, puedes acceder a esa variable desde una política, que se ilustra a continuación.
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/');
Puedes copiar este código en un archivo JavaScript, implementarlo en Edge y probarlo. Llama al archivo server.js
. Para implementarlo, usa el siguiente comando:
apigeetool deploynodeapp -u username -p password -o myorg -e test -n access -d . -m server.js -b /access
Después de implementar la aplicación en Edge, agrega una política deAssignMessage con la siguiente configuración al flujo de solicitudes de 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>
A continuación, adjunta otra política deAssignMessage al flujo previo de respuesta de 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>
Puedes llamar al proxy de la siguiente manera:
curl -i http://myorg-test.apigee.net/access
Ahora, ve a la página del proxy de acceso en la IU de administración y abre la vista Develop. Haz clic en Registros de Node.js para ver los resultados del registro desde el proxy. Si el proxy se configuró correctamente, verás que se estableció la variable userId. También verás que el encabezado se configuró en el resultado de cURL en la ventana de terminal:
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
Métodos
getVariable
var result = getVariable(httpRequest, name);
Obtiene una variable con nombre.
Parámetros:
httpRequest
: Es el objeto de solicitud que proviene del módulo HTTP.name
: (String). Es el nombre de la variable que se recuperará.
Devuelve:
Una string o un número, según el tipo que se configuró con setVariable(), cuando lo creaste en otro lugar o cuando lo creó una política. Si accedes a una de las variables de Edge listas para usar, puedes encontrar una lista de tipos en Referencia de variables. Para conocer los tipos de variables que crean las políticas, consulta el tema específico de referencia de la política.
Ejemplos:
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);
Establece una variable. Algunas variables son de solo lectura, y el método setVariable() genera una excepción si intentas establecer una de ellas. Para determinar qué variables son de solo lectura, consulta Referencia de variables.
Parámetros:
httpRequest
: Es el objeto de solicitud que proviene del módulo HTTP.name
: (String). Es el nombre de la variable que se recuperará.value
: Puede ser un número, una string, un valor booleano, un valor nulo o un valor indefinido.
Ejemplo:
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);
El método setIntVariable() es un método de conveniencia que primero coerciona el parámetro de valor a un número entero y, luego, lo establece.
Parámetros:
httpRequest
: Es el objeto de solicitud que proviene del módulo HTTP.name
: (String). Es el nombre de la variable que se configurará.value
: El parámetro del valor debe ser una cadena o un número.
Ejemplo:
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
Borra una variable con nombre. Es un error borrar una variable de solo lectura. Para obtener una lista completa de las variables de solo lectura, consulta Referencia de variables.
deleteVariable(httpRequest, name);
Parámetros:
httpRequest
: Es el objeto de solicitud que proviene del módulo HTTP.name
: (String). Es el nombre de la variable que se borrará.
Ejemplo:
apigee.deleteVariable(request, 'TestVariable'); // This will throw an exception because client.ip is a read-only variable. apigee.deleteVariable(request, 'client.ip');