Implementa una app independiente de Node.js

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

En este tema, se explica cómo implementar una aplicación de Node.js en Apigee Edge desde tu sistema local. 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.

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

Puedes implementar una aplicación existente de la API de Node.js, incluidos los módulos de Node.js dependientes, desde tu sistema local a Apigee Edge mediante 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 escucha las solicitudes HTTP, procesa esas solicitudes y muestra datos, entre otras acciones. Cuando usas apigeetool para implementar una aplicación de Node.js en Edge, esta se une a un proxy y se ejecuta dentro del contexto de la plataforma Edge. Luego, puedes llamar a tu aplicación a través de su nueva URL del proxy y agregarle valor "adorándola" con funciones estándar de Edge, como la seguridad de OAuth, las políticas de cuotas, las políticas de protección contra amenazas, los flujos condicionales, el almacenamiento en caché y muchas más.

¿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 cualquier paquete de Node.js instalado con NPM (módulos empaquetados de Node).
  • Importa el paquete de configuración del proxy de la API a la organización especificada en Apigee Edge mediante la API de Edge Management.
  • Implementa el proxy de API en un entorno.
  • Ejecuta la aplicación de Node.js en Apigee Edge y pone a disposición a través de la red.

Prepárate para usar Apigeetool

Antes de comenzar, debes instalar la utilidad apigeetool.

Puedes instalar Apigeetool a través de npm o mediante la clonación y la vinculación del código desde 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 la 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 hayas completado la instalación, asegúrate de que el archivo 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, debes 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 comando apigeetool.

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

  1. En una ventana de terminal, usa cd para 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 tu terminal. Tendrá un aspecto similar al siguiente:

    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 el mensaje “Estado: implementado”, no tienes que hacer nada más. Todo salió bien. Tu app de Node.js está unida a un proxy de API, se implementa en Edge y se ejecuta y espera para controlar las solicitudes. Está listo 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 en la lista.

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

Si tu aplicación de Node.js depende de módulos instalados, apigeetool para controlarlos. Para ello, comprime la carpeta node_modules y la agrega al paquete del proxy. No se requiere ninguna acción adicional. 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 el proyecto, editar los archivos de forma local y, luego, volver a implementarlos con Apigeetool o mediante la importación del proyecto exportado con la IU de administración. Consulta también "Cómo importar y exportar un proxy con código de Node.js".

Información básica de uso de Apigeetool

Para obtener información de uso básica sobre 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 hacer esto completamente a través de la IU de administración y el cuadro de diálogo Nuevo proxy de API.

  1. En la página de resumen del proxy de la API, haz clic en + Proxy de API.
  2. En el diálogo New API Proxy, selecciona Existing Node.js.
  3. Usa el botón Elegir archivos a fin de seleccionar uno o más archivos de Node.js para importar.
  4. Asígnale un nombre al proxy. En este ejemplo, lo llamamos hellonode.
  5. Agrega la versión /v1 a la ruta base del proyecto. Se recomienda controlar las versiones de tu API.
  6. Haz clic en Build.
  7. Haz clic en Develop para ingresar a la vista Develop.
  8. Abre el archivo TargetEndpoint en el editor de código.
  9. Asegúrate de que el elemento <ScriptTarget> especifique el archivo principal de Node.js de la siguiente manera:


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

Invoca y agrega archivos de recursos de Node.js nuevos

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

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

La IU de administración te permite agregar archivos fuente de Node.js adicionales a un proxy que está en la plataforma 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 de Node.js nuevo, sigue estos pasos:

  1. En la vista Develop, selecciona New Script en el menú New.
  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.

Se abrirá el nuevo archivo Node.js en blanco en el editor. Puedes cortar y pegar el código en el archivo. El archivo también aparecerá en la sección Scripts del Navegador.

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

Importa archivos de Node.js desde el sistema de archivos

Para import un archivo Node.js del sistema de archivos al proxy, sigue estos pasos:

  1. En la vista Develop, selecciona New Script en el menú New.
  2. En el cuadro de diálogo Agregar secuencia de comandos, haz clic en Importar secuencia de comandos.
  3. Usa la herramienta de archivos para seleccionar tu archivo Node.js.
  4. El nombre del archivo se agregará al diálogo, pero puedes cambiarlo si lo deseas.
  5. Haz clic en Agregar. El archivo aparecerá en la sección Scripts de Navigator y se abrirá 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.

Cómo invocar un archivo de Node.js importado

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

  1. En Target Endpoints, en el navegador, haz clic en el nombre del extremo de destino (por lo general, se llama default).
  2. En el editor de código, edita el elemento <ScriptTarget> mediante un cambio de <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, debes ingresar 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 del proxy que hayas usado antes. Analizamos el ejemplo de Hello World, en el que se especifica la ruta base v1/hello. Sin embargo, puede cambiar la ruta base si edita el extremo del proxy.

  1. En Proxy Endpoints en el Navegador, haz clic en el nombre del extremo del proxy (por lo general, se llama default).
  2. En el editor de código, edita el elemento <HttpProxyConnection> cambiando <BasePath> por el nombre que desees. Por ejemplo, si el <BasePath> actual es v1/hello y quieres 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!
    

Importa y exporta un proxy con código de Node.js

Después de implementar un proxy que contiene código Node.js en Edge, siempre puedes volver a exportarlo a tu sistema, trabajar en él allí y 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 general.

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

Para importar el paquete de proxy de nuevo a Edge, selecciona Import Into New Revision en el mismo menú.

También puedes usar la API para implementar proxies. Para obtener más información, consulta Implementa proxies desde la línea de comandos.

Próximos pasos

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