Acessar variáveis de fluxo no Node.js

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Introdução

Use o módulo apigee-access para acessar o fluxo do Apigee Edge variáveis em um aplicativo Node.js. O módulo tem métodos para receber, configurar e excluir variáveis. Ele também tem um método conveniente para definir uma variável de número inteiro.

As variáveis de fluxo existem no contexto de um fluxo de proxy de API. Algumas variáveis são "integradas" para Borda Outras são criadas quando as políticas são executadas, e você pode criar suas próprias variáveis. Fluxo as variáveis normalmente são usadas para transmitir dados de uma política a outra e para definir condições em fluxos condicionais. Para informações sobre variáveis de fluxo, consulte Variáveis de fluxo e e condições.

Para conferir uma introdução ao módulo apigee-access e a outros recursos dele, consulte Como usar o módulo apigee-access.

Exemplo funcional

Imagine que uma política de borda em execução no caminho do fluxo de solicitações define uma variável chamada AuthenticatedUserId: O código a seguir acessa essa variável e a exibe em uma de registro. Além disso, esse código define uma variável. É possível acessar essa variável em uma política que ilustramos abaixo.

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

Copie esse código em um arquivo JavaScript, implante-o no Edge e faça um teste. Chame o método server.js. Para implantá-lo, use:

apigeetool deploynodeapp -u username -p password -o myorg -e test -n access -d . -m server.js -b /access

Depois de implantar o aplicativo no Edge, adicione uma políticaAssignMessage com o seguinte para o fluxo de solicitação do 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>

Em seguida, anexe outra políticaAssignMessage ao pré-fluxo de resposta do 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>

É possível chamar o proxy da seguinte forma:

curl -i http://myorg-test.apigee.net/access

Agora, vá para a página do proxy de acesso na interface do usuário de gerenciamento e abra a Desenvolver. Clique em Registros do Node.js para conferir a saída do registro proxy. Se o proxy estiver configurado corretamente, você verá que a variável userId foi definida. Você também vai ver que o cabeçalho foi definido na saída do cURL na janela do 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);

Recebe uma variável nomeada.

Parâmetros:

  • httpRequest: o objeto de solicitação que vem do módulo http.
  • name: (string) o nome da variável a ser recuperada.

Retorna:

Uma string ou um número, dependendo do tipo que foi definido usando setVariable(), quando foi criada por você em outro lugar ou quando foi criada por uma política. Se você estiver acessando um dos variáveis do Edge prontas para uso, você encontra uma lista de tipos na Referência de variáveis. Para tipos de variáveis criados pelas políticas, consulte o tópico de referência da política específica.

Exemplos:

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

Define uma variável. Algumas variáveis são somente leitura e o método setVariable() gera uma caso você tente definir um deles. Para determinar quais variáveis são somente leitura, consulte o painel Variáveis Referência.

Parâmetros:

  • httpRequest: o objeto de solicitação que vem do módulo http.
  • name: (string) o nome da variável a ser recuperada.
  • value: pode ser um número, string, booleano, nulo ou indefinido.

Exemplo:

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

O método setIntVariable() é um método de conveniência que primeiro força o parâmetro de valor a um número inteiro e o define.

Parâmetros:

  • httpRequest: o objeto de solicitação que vem do módulo http.
  • name: (string) o nome da variável a ser definida.
  • value: o parâmetro do valor precisa ser uma string ou um número.

Exemplo:

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

Exclui uma variável nomeada. É um erro excluir uma variável somente leitura. Para um guia lista de variáveis somente leitura, consulte a Referência de variáveis.

deleteVariable(httpRequest, name);

Parâmetros:

  • httpRequest: o objeto de solicitação que vem do módulo http.
  • name: (string) o nome da variável a ser excluída.

Exemplo:

  apigee.deleteVariable(request, 'TestVariable');
    // This will throw an exception because client.ip is a read-only variable.
    apigee.deleteVariable(request, 'client.ip');