Implementa una app independiente de Node.js

Estás viendo la documentación de Apigee Edge.
Ir a la documentación de Apigee X.
info

En este tema, se explica cómo implementar una aplicación de Node.js desde tu sistema local en Apigee Edge. En este tema, analizaremos cómo usar una herramienta de línea de comandos llamada apigeetool para implementar aplicaciones de Node.js en Apigee Edge.

Acerca de la implementación de código de Node.js en Apigee Edge

Puedes implementar una aplicación de API de Node.js existente, incluidos los módulos de Node.js dependientes, desde tu sistema local en Apigee Edge con una utilidad de línea de comandos llamada apigeetool. La utilidad agrupa automáticamente la aplicación y sus dependencias en un proxy de API y la implementa en Edge.

Por ejemplo, supongamos que usaste Express para crear una aplicación web en Node.js. La aplicación se ejecuta como un servidor HTTP que detecta las solicitudes HTTP, las procesa, devuelve datos, etcétera. Cuando usas apigeetool para implementar una aplicación de Node.js en Edge, se incluye en un proxy y se ejecuta en el contexto de la plataforma de Edge. Luego, puedes llamar a tu aplicación a través de su nueva URL de proxy y agregarle valor a ella “vistiéndola” con funciones estándar de Edge, como seguridad de OAuth, políticas de cuota, políticas de protección contra amenazas, flujos condicionales, almacenamiento en caché y muchas otras.

¿Qué hace apigeetool?

Cuando ejecutas la utilidad apigeetool con la opción deploynodeapp, sucede lo siguiente:

  • Genera un paquete de configuración de proxy de API para alojar la aplicación de Node.js.
  • Empaqueta la aplicación de Node.js con los paquetes de Node.js instalados con NPM (módulos empaquetados de Node).
  • Importa el paquete de configuración de proxy de API a la organización especificada en Apigee Edge con la API de administración de Edge.
  • Implementa el proxy de API en un entorno.
  • Ejecuta la aplicación de Node.js en Apigee Edge y la pone a disposición en la red.

Prepárate para usar apigeetool

Antes de comenzar, debes instalar la utilidad apigeetool.

Puedes instalar apigeetool a través de npm o clonando y vinculando el código de GitHub.

Instalación desde npm

El módulo apigeetool y sus dependencias están diseñados para Node.js y están disponibles a través de npm con el siguiente comando:

$ sudo npm install -g apigeetool

Por lo general, la opción -g coloca módulos en: /usr/local/lib/node_modules/apigeetool en máquinas basadas en *nix.

Instalación desde GitHub

Descarga o clona las herramientas de la plataforma de API desde GitHub. Consulta el archivo README en el directorio raíz del repositorio para obtener instrucciones de instalación.

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

Cuando completes la instalación, asegúrate de que el ejecutable apigeetool esté en tu ruta de acceso. Para probarlo, escribe lo siguiente:

$ apigeetool -h

Implementa una aplicación de Node.js en Edge con apigeetool

Nota: Antes de la implementación, deberás conocer el nombre de la organización de Apigee Edge, el nombre de usuario y la contraseña de tu cuenta de Apigee Edge. Necesitas esta información para formar correctamente el apigeetool comando.

Para implementar una aplicación de Node.js con apigeetool, haz lo siguiente:

  1. En una ventana de la terminal, cd el directorio raíz de tu aplicación de Node.js.
  2. Ejecuta la utilidad apigeetool con el comando deploynodeapp

    $ 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}
    
    Por ejemplo:

    $ apigeetool deploynodeapp -n myNodeApp -d . -m server.js -o myorg -e test -b /myNodeApp -u ntesla -p myPassword
    
  3. Verifica el resultado en la ventana de la terminal. Se parecerá a esto:

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

    Si ves “Status: deployed”, eso es todo. Todo salió bien. Tu app de Node.js está incluida en un proxy de API, implementada en Edge, y se ejecuta y espera para controlar las solicitudes. Está lista para probarse.

  4. Prueba tu proxy. Por ejemplo:

    $ curl http://myorg-test.apigee.net/myNodeApp
    Hello, My Node App!
    
  5. Si lo deseas, accede a tu cuenta de Apigee Edge y ve a la página Proxies de API de la IU de administración. Verás tu nuevo proxy allí.

Cómo apigeetool controla los archivos y módulos dependientes

Si tu aplicación de Node.js depende de módulos instalados, apigeetool los controla comprimiendo la carpeta node_modules y agregándola al paquete de proxy. No es necesario realizar ninguna otra acción. Lo mismo sucede con los directorios que contienen código fuente adicional. La utilidad apigeetool los comprime y los implementa con el paquete.

No puedes editar archivos en estos directorios comprimidos en el editor de la IU de administración de Edge. Si necesitas cambiarlos, puedes exportar tu proyecto, editar los archivos de forma local y, luego, volver a implementarlos con apigeetool o importar el proyecto exportado con la IU de administración. Consulta también "Exporta e importa un proxy con código de Node.js".

Información básica de uso para apigeetool

Para obtener información básica sobre el uso de los parámetros de entrada de la utilidad apigeetool, ingresa lo siguiente:

$ 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

Crea un proxy nuevo con archivos de Node.js existentes

Otra forma de integrar una aplicación de Node.js existente en un proxy de API es agregar la aplicación cuando creas el proxy. Puedes hacerlo por completo a través de la IU de administración y el diálogo Nuevo proxy de API.

  1. En la página de resumen del proxy de API, haz clic en +Proxy de API.
  2. En el diálogo Nuevo proxy de API, selecciona Node.js existente.
  3. Usa el botón Elegir archivos para seleccionar uno o más archivos de Node.js para importar.
  4. Asigna un nombre al proxy. En este ejemplo, lo llamaremos hellonode.
  5. Agrega la versión /v1 a la ruta base del proyecto. El control de versiones de tu API es una práctica recomendada.
  6. Haz clic en Build.
  7. Haz clic en Desarrollar para ingresar a la vista Desarrollar.
  8. Abre el archivo TargetEndpoint en el editor de código.
  9. Asegúrate de que el <ScriptTarget> elemento especifique el archivo principal de Node.js, como sigue:


    <ScriptTarget>
            <ResourceURL>node://server.js</ResourceURL>
            <Properties/>
    </ScriptTarget>
  10. Haz clic en Guardar.

Agrega e invoca archivos de recursos nuevos de Node.js

Otra forma de agregar código de Node.js a un proxy es agregarlo directamente, ya sea a través de la IU o subiéndolo desde tu sistema de archivos local. También puedes especificar qué archivo de Node.js es el archivo principal, que es el archivo que invoca Edge cuando se implementa el proxy.

Agrega archivos nuevos de Node.js a través de la IU

La IU de administración te permite agregar archivos fuente adicionales de Node.js a un proxy que se encuentra en la plataforma de Edge. Puedes crearlos directamente en la IU o importarlos desde tu sistema de archivos. Primero, veamos cómo hacerlo desde la IU.

Para crear un archivo de recursos nuevo de Node.js, haz lo siguiente:

  1. En la vista Desarrollar, selecciona Nueva secuencia de comandos en el menú Nueva.
  2. En el diálogo Agregar secuencia de comandos, selecciona el tipo de archivo Nodo y asígnale un nombre a la secuencia de comandos.
  3. Haz clic en Agregar.

El archivo nuevo y en blanco de Node.js se abre en el editor. Puedes cortar y pegar tu código en el archivo. El archivo también aparece en la sección Secuencias de comandos del navegador.

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

Importa archivos de Node.js desde tu sistema de archivos

Para importar un archivo de Node.js desde tu sistema de archivos al proxy, haz lo siguiente:

  1. En la vista Desarrollar, selecciona Nueva secuencia de comandos en el menú Nueva.
  2. En el diálogo Agregar secuencia de comandos, haz clic en Importar secuencia de comandos.
  3. Usa la herramienta de archivos para seleccionar tu archivo de Node.js.
  4. El nombre del archivo se agrega al diálogo, pero puedes cambiarlo si lo deseas.
  5. Haz clic en Agregar. El archivo aparece en la sección Secuencias de comandos del navegador y se abre en el editor.
  6. Haz clic en Guardar.

Si deseas invocar el archivo importado, se requiere un paso adicional, como se explica en la siguiente sección.

Invoca un archivo de Node.js importado

No puedes invocar un archivo de Node.js recién importado o creado. El motivo es que Edge requiere que un archivo de Node.js sea el archivo principal. El archivo principal se especifica en el <ScriptTarget> elemento de la definición del extremo de destino. Para especificar qué archivo es el archivo principal de Node.js, haz lo siguiente:

  1. En Extremos de destino en el navegador, haz clic en el nombre del extremo de destino (por lo general, llamado predeterminado).
  2. En el editor de código, edita el elemento <ScriptTarget> cambiando el <ResourceURL> para reflejar el nombre del archivo que deseas que sea el archivo principal de Node.js. Por ejemplo, si deseas que un archivo llamado hello-world.js sea el archivo principal, ingresa node://hello-world.js en el elemento ResourceURL.
  3. Haz clic en Guardar.

En este punto, puedes invocar el archivo con la ruta de acceso de proxy que usaste antes. Por ejemplo, analizamos el ejemplo de Hello World!, en el que se especifica la ruta base v1/helloes especificada. Sin embargo, puedes cambiar la ruta base editando el extremo de proxy.

  1. En Extremos de proxy en el navegador, haz clic en el nombre del extremo de proxy (por lo general, llamado predeterminado).
  2. En el editor de código, edita el elemento <HttpProxyConnection> cambiando el <BasePath> al nombre que desees. Por ejemplo, si el <BasePath> actual es v1/hello y deseas que sea v1/my-node-file, cambia el elemento <BasePath> de la siguiente manera:

    <BasePath>/v1/my-node-file</BasePath>
  3. Haz clic en Guardar.
  4. Invoca el proxy con la nueva ruta base, de la siguiente manera:

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

Exporta e importa un proxy con código de Node.js

Después de implementar un proxy que contiene código de Node.js en Edge, siempre puedes volver a exportar el proxy de nuevo a tu sistema, trabajar en él y, luego, volver a importarlo a Edge con la IU de administración. Este tipo de técnica de desarrollo de ida y vuelta es de uso frecuente.

  1. En la página de resumen del proxy de API, haz clic en Desarrollar.
  2. En la página Desarrollar, selecciona Descargar revisión actual.
  3. Descomprime el archivo descargado en tu sistema.

Para volver a importar el paquete de proxy a Edge, selecciona Importar a una revisión nueva en el mismo menú.

También puedes usar la API para implementar proxies. Consulta Implementa proxies desde la línea de comandos para obtener más detalles.

Próximos pasos

En el siguiente tema, Agrega Node.js a un proxy de API existente, explicamos cómo agregar una app de Node.js a un proxy existente en tu sistema de archivos y cómo implementarla en Edge.