Como implantar um app Node.js independente

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Este tópico explica como implantar um aplicativo Node.js do sistema local no Apigee Edge. Neste tópico, vamos discutir como usar uma ferramenta de linha de comando chamada apigeetool para implantar aplicativos Node.js no Apigee Edge.

Sobre a implantação de código Node.js no Apigee Edge

É possível implantar um aplicativo de API Node.js existente, incluindo todos os módulos dependentes do Node.js, do sistema local no Apigee Edge usando um utilitário de linha de comando chamado apigeetool. O utilitário empacota automaticamente o aplicativo e as dependências dele em um proxy de API e o implanta no Edge.

Por exemplo, digamos que você tenha usado o Express para criar um aplicativo da Web no Node.js. O aplicativo é executado como um servidor HTTP que fica à espera de solicitações HTTP, processa essas solicitações, retorna dados e assim por diante. Quando você usa apigeetool para implantar um aplicativo Node.js no Edge, ele é encapsulado em um proxy e executado no contexto da plataforma Edge. Em seguida, é possível chamar o aplicativo pelo novo URL do proxy e adicionar valor a ele "vestindo-o" com recursos padrão do Edge, como segurança OAuth, políticas de cota, políticas de proteção contra ameaças, fluxos condicionais, armazenamento em cache e muitos outros.

O que o apigeetool faz?

Quando você executa o utilitário apigeetool com a opção deploynodeapp, ele:

  • Gera um pacote de configuração de proxy de API para hospedar o aplicativo Node.js.
  • Empacota o aplicativo Node.js com todos os pacotes Node.js instalados com o NPM (Node Módulos Empacotados).
  • Importa o pacote de configuração de proxy de API para a organização especificada no Apigee Edge usando a API de gerenciamento do Edge.
  • Implanta o proxy de API em um ambiente.
  • Executa o aplicativo Node.js no Apigee Edge e o disponibiliza na rede.

Preparação para usar o apigeetool

Antes de começar, instale o utilitário apigeetool.

É possível instalar o apigeetool pelo npm ou clonando e vinculando o código do GitHub.

Instalação do npm

O módulo apigeetool e as dependências dele foram projetados para o Node.js e estão disponíveis pelo npm usando o seguinte comando:

$ sudo npm install -g apigeetool

Normalmente, a opção -g coloca módulos em: /usr/local/lib/node_modules/apigeetool em máquinas baseadas em *nix.

Instalação do GitHub

Faça o download ou clone as ferramentas da plataforma de API do GitHub. Consulte o arquivo README no diretório raiz do repositório para instruções de instalação.

$ git clone https://github.com/apigee/apigeetool-node.git

Quando a instalação for concluída, verifique se o executável apigeetool está no seu caminho. Para testar, digite:

$ apigeetool -h

Como implantar um aplicativo Node.js no Edge com o apigeetool

Observação: 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. Essas informações são necessárias para formar corretamente o apigeetool comando.

Para implantar um aplicativo Node.js usando apigeetool:

  1. Em uma janela de terminal, cd o diretório raiz do aplicativo Node.js.
  2. Execute o utilitário apigeetool com o deploynodeapp comando:

    $ apigeetool deploynodeapp -n {A name for your new proxy} -d {The root directory of your Node.js app} -m {The name of the main Node.js file} -o {Your org name on Edge} -e {The environment to deploy to} -b {The base URL for your proxy} -u {Your Edge email address} -p {Your Edge password}
    
    Exemplo:

    $ apigeetool deploynodeapp -n myNodeApp -d . -m server.js -o myorg -e test -b /myNodeApp -u ntesla -p myPassword
    
  3. Confira a saída na janela do terminal. Ela será parecida com esta:

    Importing new application myNodeApp
    Imported new app revision 1
    Deploying revision 1
      Deployed.
    Proxy: "myNodeApp" Revision 1
      Environment: test BasePath: /myNodeApp
      Status: deployed

    Se você vir "Status: deployed", é isso. Tudo correu bem. Seu app Node.js está encapsulado em um proxy de API, implantado no Edge, e está em execução e aguardando o processamento de solicitações. Ele está pronto para ser testado.

  4. Teste o proxy. Exemplo:

    $ curl http://myorg-test.apigee.net/myNodeApp
    Hello, My Node App!
    
  5. Se quiser, faça login na sua conta do Apigee Edge e acesse a página Proxies de API da interface de gerenciamento. Seu novo proxy vai aparecer na lista.

Como o apigeetool processa arquivos e módulos dependentes

Se o aplicativo Node.js depende de módulos instalados, o apigeetool os processa compactando a pasta node_modules e adicionando-a ao pacote de proxy. Nenhuma outra ação é necessária. O mesmo vale para todos os diretórios que contêm código-fonte adicional. O utilitário apigeetool os compacta e os implanta com o pacote.

Não é possível editar arquivos nesses diretórios compactados no editor da interface de gerenciamento do Edge. Se você precisar alterá-los, exporte o projeto, edite os arquivos localmente e reimplemente usando o apigeetool ou importando o projeto exportado usando a interface de gerenciamento. Consulte também "Como exportar e importar um proxy com código Node.js".

Informações básicas de uso do apigeetool

Para informações básicas de uso sobre os parâmetros de entrada do utilitário apigeetool, insira:

$ apigeetool deploynodeapp -h

  Usage: deploynodeapp -n [name] -o [organization] -e [environment]
  -d [directory name] -m [main script file]
  -u [username] -p [password]
  -b [base path] -l [apigee API url] -z [zip file] -i -h
  -o Apigee organization name
  -e Apigee environment name
  -n Apigee proxy name
  -d Apigee proxy directory
  -m Main script name: Should be at the top level of the directory
  -u Apigee user name
  -p Apigee password
  -b Base path (optional, defaults to /)
  -L Apigee API URL (optional, defaults to https://api.enterprise.apigee.com)
  -z ZIP file to save (optional for debugging)
  -i import only, do not deploy
  -R Resolve Node.js modules on Apigee Edge. Equivalent to running npm install on your project. 
  -U Uploads Node.js modules to Apigee Edge. 
  -h Print this message

Como criar um novo proxy com arquivos Node.js existentes

Outra maneira de integrar um aplicativo Node.js existente a um proxy de API é adicionar o aplicativo ao criar o proxy. É possível fazer isso totalmente pela interface de gerenciamento e pela caixa de diálogo "Novo proxy de API".

  1. Na página de resumo do proxy de API, clique em +Proxy de API.
  2. Na caixa de diálogo "Novo proxy de API", selecione Node.js existente.
  3. Use o botão Escolher arquivos para selecionar um ou mais arquivos Node.js para importar.
  4. Dê um nome ao proxy. Neste exemplo, vamos chamá-lo de hellonode.
  5. Adicione a versão /v1 ao caminho base do projeto. O controle de versões da API é uma prática recomendada.
  6. Clique em Build.
  7. Clique em Desenvolver para acessar a visualização "Desenvolver".
  8. Abra o arquivo TargetEndpoint no editor de código.
  9. Verifique se o elemento <ScriptTarget> especifica o arquivo principal do Node.js, da seguinte maneira:


    <ScriptTarget>
            <ResourceURL>node://server.js</ResourceURL>
            <Properties/>
    </ScriptTarget>
  10. Clique em Salvar.

Como adicionar e invocar novos arquivos de recursos do Node.js

Outra maneira de adicionar código Node.js a um proxy é adicioná-lo diretamente, pela interface ou fazendo upload do sistema de arquivos local. Também é possível especificar qual arquivo Node.js é o principal arquivo, que é o arquivo invocado pelo Edge quando o proxy é implantado.

Como adicionar novos arquivos Node.js pela interface

A interface de gerenciamento permite adicionar outros arquivos de origem do Node.js a um proxy que está na plataforma Edge. É possível criá-los diretamente na interface ou importá-los do sistema de arquivos. Primeiro, vamos ver como fazer isso na interface.

Para criar um novo arquivo de recursos do Node.js:

  1. Na visualização "Desenvolver", selecione Novo script no menu "Novo".
  2. Na caixa de diálogo "Adicionar script", selecione o tipo de arquivo e nomeie o script.
  3. Clique em "Adicionar".

O novo arquivo Node.js em branco é aberto no editor. É possível recortar e colar o código no arquivo. O arquivo também aparece na seção "Scripts" do navegador.

[[{"type":"media","view_mode":"media_large","fid":"2431","attributes":{"alt":"","class":"media-image","height":"312","typeof":"foaf:Image","width":"417"}}]]

Como importar arquivos Node.js do sistema de arquivos

Para importar um arquivo Node.js do seu sistema de arquivos para o proxy:

  1. Na visualização "Desenvolver", selecione Novo script no menu "Novo".
  2. Na caixa de diálogo "Adicionar script", clique em Import Script.
  3. Use a ferramenta de arquivo para selecionar o arquivo Node.js.
  4. O nome do arquivo é adicionado à caixa de diálogo, mas é possível alterá-lo, se quiser.
  5. Clique em "Adicionar". O arquivo aparece na seção "Scripts" do navegador e é aberto no editor.
  6. Clique em "Salvar".

Se você quiser invocar o arquivo importado, uma etapa extra será necessária, conforme explicado na próxima seção.

Como invocar um arquivo Node.js importado

Não é possível invocar um arquivo Node.js recém-importado ou criado. O motivo é que o Edge exige que um arquivo Node.js seja o principal. O arquivo principal é especificado no <ScriptTarget> elemento da definição do endpoint de destino. Para especificar qual arquivo é o principal do Node.js, faça o seguinte:

  1. Em "Endpoints de destino" no navegador, clique no nome do endpoint de destino (geralmente chamado padrão).
  2. No editor de código, edite o elemento <ScriptTarget> alterando o <ResourceURL> para refletir o nome do arquivo que você quer que seja o principal do Node.js. Por exemplo, se você quiser que um arquivo chamado hello-world.js seja o principal, insira: node://hello-world.js no elemento ResourceURL.
  3. Clique em "Salvar".

Nesse momento, é possível invocar o arquivo com qualquer caminho de proxy usado antes. Por exemplo, analisamos o exemplo "Olá, mundo!", em que o caminho base v1/hello é especificado. No entanto, é possível alterar o caminho base editando o endpoint de proxy.

  1. Em "Endpoints de proxy" no navegador, clique no nome do endpoint de proxy (geralmente chamado padrão).
  2. No editor de código, edite o elemento <HttpProxyConnection> alterando o <BasePath> para o nome que você quiser. Por exemplo, se o <BasePath> atual for v1/hello e você quiser que ele seja v1/my-node-file, altere o elemento <BasePath> desta forma:

    <BasePath>/v1/my-node-file</BasePath>
  3. Clique em "Salvar".
  4. Invoque o proxy usando o novo caminho base, desta forma:

    $ curl http://myorg-test.apigee.net/v1/my-node-file
    Hello, World!
    

Como exportar e importar um proxy com código Node.js

Depois de implantar um proxy que contém código Node.js no Edge, é sempre possível exportar o proxy de volta para o sistema, trabalhar nele e depois importá-lo novamente para o Edge usando a interface de gerenciamento. Esse tipo de técnica de desenvolvimento de ida e volta é usado com frequência.

  1. Na página de resumo do proxy de API, clique em Desenvolver.
  2. Na página "Desenvolver", selecione Fazer o download da revisão atual.
  3. Descompacte o arquivo salvo no sistema.

É possível importar o pacote de proxy de volta para o Edge selecionando Importar para nova revisão no mesmo menu.

Também é possível usar a API para implantar proxies. Consulte Como implantar proxies na linha de comando para mais detalhes.

Próximas etapas

No próximo tópico, Como adicionar Node.js a um proxy de API existente, explicamos como adicionar um app Node.js a um proxy existente no sistema de arquivos e implantá-lo no Edge.