Como adicionar Node.js a um proxy de API

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Introdução

Neste tópico, explicamos como adicionar um aplicativo Node.js a um proxy atual no sistema de arquivos local e como implantar o proxy no Apigee Edge.

Como preparar seu ambiente para desenvolvedores

Neste tópico, presumimos que você já tenha um ambiente de desenvolvimento de proxy configurado no seu sistema local e queira integrar um aplicativo Node.js a ele.

A estrutura básica de um aplicativo de proxy que inclui um app Node.js segue o padrão mostrado na figura abaixo, com uma pasta /apiproxy base e subpastas para recursos, destinos e proxies. A pasta apiproxy/resources/node é onde os arquivos Node.js precisam ser colocados. As outras pastas contêm arquivos XML que definem endpoints de proxy e de destino, fluxo de proxy, fluxos condicionais e assim por diante. Para uma descrição mais completa da estrutura do proxy de API, consulte a Referência de configuração do proxy de API.

Lembre-se de que qualquer código Node.js que faça parte do proxy precisa ser colocado em /apiproxy/resources/node. É aqui que o Edge espera encontrá-lo quando for implantado.

Especifique o destino do Node.js com ScriptTarget

A chave para integrar o Node.js em um proxy é especificar o elemento <ScriptTarget> no arquivo XML do endpoint de destino. Na estrutura de arquivos do proxy, esse arquivo XML está localizado em apiproxy/targets. Por padrão, o nome do arquivo é default.xml.

Para contextualizar, considere que um endpoint de destino geralmente aponta para um serviço de back-end de algum tipo. Neste caso, chegamos à simulação do serviço de destino da Apigee. Uma definição de endpoint de destino tem esta aparência:

<TargetEndpoint name="default">
    <Description/>
    <Flows/>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
    <HTTPTargetConnection>
        <URL>http://mocktarget.apigee.net/</URL>
    </HTTPTargetConnection>
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
</TargetEndpoint>

O elemento <HTTPTargetConnection> especifica o URL do serviço de back-end, o serviço de destino simulado da Apigee.

Entretanto, no caso do Node.js, o aplicativo Node.js em si é o destino. Isso é especificado com <ScriptTarget> no arquivo apiproxy/targets/default.xml.

Em vez de o destino usar o elemento <HTTPTargetConnection> para especificar o URL de um serviço de back-end, o aplicativo Node.js é referenciado diretamente usando um elemento <ScriptTarget>, como este:

<TargetEndpoint name="default">
    <ScriptTarget>
         <ResourceURL>node://server.js</ResourceURL>
    </ScriptTarget>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
</TargetEndpoint>

O parâmetro <ResourceURL> sempre precisa ser prefixado com node://, seguido pelo nome do script Node.js principal. Além disso, conforme observado anteriormente, os recursos do Node.js precisam residir em /apiproxy/resources/node no escopo do proxy de API.

É possível definir parâmetros adicionais no ScriptTarget. Para mais detalhes, consulte Configuração avançada do ScriptTarget.

Para o propósito deste exemplo, aqui está o código-fonte do arquivo Node.js principal, chamado server.js. É o servidor HTTP básico que retorna "Hello World!" quando recebe uma solicitação:

var http = require('http');
console.log('node.js application starting...');
var svr = http.createServer(function(req, resp) {
    resp.end('Hello, Node!');
});

svr.listen(process.env.PORT || 9000, function() {
    console.log('Node HTTP server is listening');
});

Para resumir, supondo que o aplicativo Node.js principal esteja implementado em um arquivo chamado server.js e que as configurações de endpoint sejam denominadas default.xml, o proxy de API que contém o script Node.js tem a seguinte estrutura:

/apiproxy/proxyName.xml
/apiproxy/proxies/default.xml
/apiproxy/targets/default.xml
/apiproxy/resources/node/server.js

Prepare-se para implantar o aplicativo

A maioria dos apps Node.js tem arquivos de dependência e inclui um arquivo package.json no diretório base. Nesse caso, a prática recomendada é executar o utilitário npm para garantir que o diretório node_modules de nível superior seja preenchido com as dependências antes da implantação. Se houver alguma dependência remota não incluída em node_modules, seu aplicativo Node.js não será executado no Edge.

Você pode recuperar facilmente todas as dependências no seu sistema de arquivos usando o utilitário npm:

  1. No diretório base do aplicativo Node.js, execute:
$ npm install 

ou

$ npm update

Quando as dependências forem instaladas, você estará pronto para implantar o proxy no Edge.

Implantar o app Node.js na Apigee Edge

Antes de implantar, você precisa saber o nome da organização, o nome de usuário e a senha da sua conta do Apigee Edge. Você precisa dessas informações para formar corretamente o comando da ferramenta de implantação.

Aqui está o comando. Ele pressupõe (com a sinalização -d) que você está no diretório raiz do proxy. Se o proxy se chamar foo, digite este comando no diretório foo:

$ apigeetool deployproxy -u username -p password -o org -e test -n hellonode -d .
Para saber o que cada uma das flags de comando significa, faça o seguinte:

$ apigeetool deployproxy -h

Para um resumo rápido:

  • -n: permite especificar o nome do proxy que será criado quando o app for implantado. Você vai encontrar esse nome na interface de gerenciamento.
  • -d Especifica o diretório raiz do proxy de API.
  • -o, -e, -u e -p especificam o nome da organização, o ambiente de implantação, o nome de usuário e a senha.
Pronto. Seu app Node.js é encapsulado em um proxy de API, implantado no Edge e executado. Ele está aguardando solicitações e pronto para ser testado.

Teste o novo proxy de API

Você acabou de adicionar um app Node.js a um proxy de API e implantá-lo na Apigee Edge. Para testá-lo, execute este comando cURL. Presumimos que o caminho base padrão (/) seja usado (o caminho base é especificado no arquivo de configuração do endpoint do proxy). Não se esqueça de substituir o nome da organização por org_name. Caso você não tenha o cURL instalado, insira o URL em um navegador.

$ curl http://org_name-test.apigee.net/
Hello, Node!

Ver o novo proxy na interface de gerenciamento

Faça login na sua conta do Apigee Edge e acesse a página "Proxies de API". Você verá o proxy chamado "hellonode" listado lá.

Clique em "hellonode" para ver detalhes sobre o proxy. Na visualização de desenvolvimento, é possível ver o código-fonte enviado, adicionar políticas, editar fluxos e assim por diante.

Próximas etapas

Para informações sobre a depuração de aplicativos Node.js em execução no Apigee Edge, consulte Depuração e solução de problemas de proxies Node.js.