Accede a variables de flujo en Node.js

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

Introducción

Usar el módulo apigee-access para acceder al flujo de Apigee Edge variables en una aplicación de Node.js. El módulo tiene métodos para obtener, configurar y borrar variables. También tiene un método útil para establecer una variable de número entero.

Las variables de flujo existen en el contexto de un flujo del proxy de API. Algunas variables están "integradas" a Edge. Otras se crean cuando se ejecutan las políticas, y puedes crear tus propias variables. Flujo Por lo general, las variables se usan para pasar datos de una política a otra y establecer condiciones en flujos condicionales. Para obtener información sobre las variables de flujo, consulta Variables de flujo y condiciones.

Para ver una introducción al módulo apigee-access y sus otras funciones, consulta Usar el módulo de 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 ilustramos 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 lo siguiente:

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 los siguientes elementos: de Terraform al flujo de solicitud 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 Develop. Haz clic en Registros de Node.js para ver el resultado del registro. el proxy. Si el proxy está configurado correctamente, verás que se configuró 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: (Cadena) Es el nombre de la variable que se recuperará.

Muestra:

Una cadena o un número, dependiendo del tipo que se estableció usando setVariable(), cuando se creados por ti en otro lugar o cuando la creó una política. Si quieres acceder a uno de los Puedes encontrar una lista de tipos en la Referencia de variables para utilizar variables de Edge listas para usar. Para los tipos de variables creados con políticas, consulta el tema de referencia de políticas específico.

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 si intentas establecer una de ellas. Para determinar qué variables son de solo lectura, consulta la sección Variables Referencia.

Parámetros:

  • httpRequest: Es el objeto de solicitud que proviene del módulo HTTP.
  • name: (Cadena) Es el nombre de la variable que se recuperará.
  • value: Puede ser un número, una cadena, 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: (Cadena) Es el nombre de la variable que se configurará.
  • value: El parámetro de 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 de variables de solo lectura, consulta la Referencia de variables.

deleteVariable(httpRequest, name);

Parámetros:

  • httpRequest: Es el objeto de solicitud que proviene del módulo HTTP.
  • name: (String) 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');