Você está vendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. informações
Introdução
Use o módulo apigee-access
para acessar as variáveis
de fluxo do Apigee Edge 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 de conveniência para configurar 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" ao Edge. Outras são criadas quando as políticas são executadas, e você pode criar suas próprias variáveis. As variáveis de fluxo normalmente são usadas para transmitir dados de uma política para outra e para definir condições em fluxos condicionais. Para informações sobre variáveis de fluxo, consulte Variáveis e condições de fluxo.
Para uma introdução ao módulo apigee-access
e a outros recursos dele, consulte
Como usar o módulo apigee-access.
Exemplo de trabalho
Imagine que uma política de borda executada no caminho do fluxo de solicitação defina uma variável chamada AuthenticatedUserId
. O código a seguir acessa essa variável e a imprime em um registro. Além disso, esse código define uma variável. É possível acessar essa variável a partir de uma política, ilustrada 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/');
É possível copiar esse código em um arquivo JavaScript, implantá-lo no Edge e testá-lo. Chame o arquivo 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ítica AttributionMessage com a seguinte configuração ao fluxo de solicitações 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ítica AttributionMessage ao pré-fluxo de resposta 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>
Você pode chamar o proxy desta forma:
curl -i http://myorg-test.apigee.net/access
Agora, acesse a página do proxy de acesso na IU de gerenciamento e abra a visualização Desenvolver. Clique em Registros do Node.js para ver a saída do registro do 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 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 definido usando setVariable(), de quando foi criado por você em outro lugar ou quando foi criado por uma política. Se você estiver acessando uma das variáveis do Edge prontas para uso, poderá encontrar uma lista de tipos na Referência de variáveis. Para os tipos de variáveis criados por políticas, consulte o tópico de referência da política específico.
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 exceção se você tentar definir uma delas. Para determinar quais variáveis são somente leitura, consulte a Referência de variáveis.
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 depois 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. Excluir uma variável somente leitura é um erro. Para ver uma lista completa 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');