Você está visualizando 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, definir e excluir variáveis. Ele também tem um método de conveniência 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" 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 geralmente são usadas para transmitir dados de uma política para outra e definir condições em fluxos condicionais. Para informações sobre as variáveis de fluxo, consulte Variáveis e condições de fluxo.
Para uma introdução ao módulo apigee-access
e outros recursos, consulte
Como usar o módulo apigee-access.
Exemplo de trabalho
Imagine que uma política do Edge em execução no caminho do fluxo de solicitação define uma variável chamada
AuthenticatedUserId
. O código a seguir acessa essa variável e a exibe em um registro. Além disso, esse código define uma variável. É possível acessar essa variável usando 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/');
Você pode copiar esse código em um arquivo JavaScript, implantá-lo no Edge e testá-lo. Chame o
arquivo server.js
. Para implantar, 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 "AssignMessage" 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 AssignMessage 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>
Você pode chamar o proxy da seguinte maneira:
curl -i http://myorg-test.apigee.net/access
Agora, vá para a página do proxy de acesso na IU de gerenciamento e abra a visualização Desenvolver. Clique em Node.js Logs para conferir a saída de registro do proxy. Se o proxy estiver configurado corretamente, você verá que a variável userId foi definida. Você também vai notar 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 criado por você em outro lugar ou quando uma política o criou. 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 tipos de variáveis criadas por 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 exceção quando você tenta 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, uma string, um 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 prático 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 de 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 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');