Estás viendo la documentación de Apigee Edge.
Ve a la documentación de Apigee X. Más información
Introducción
En este tema, se explica cómo agregar una aplicación de Node.js a un proxy existente en tu sistema de archivos local y cómo implementar el proxy en Apigee Edge.
Cómo preparar tu entorno de desarrollo
En este tema, suponemos que ya tienes un entorno de desarrollo de proxy configurado en tu sistema local y que quieres integrar una aplicación de Node.js en él.
La estructura básica de una aplicación de proxy que incluye una app de Node.js sigue el patrón que se muestra en la siguiente figura, con una carpeta base /apiproxy y subcarpetas para recursos, destinos y proxies. Los archivos de Node.js se deben colocar en la carpeta apiproxy/resources/node. Las otras carpetas contienen archivos en formato XML que definen extremos de proxy y de destino, flujo de proxy, flujos condicionales, etcétera. Para obtener una descripción más completa de la estructura del proxy de API, consulta la Referencia de configuración del proxy de API.
Solo recuerda que cualquier código de Node.js que forme parte del proxy se debe colocar en /apiproxy/resources/node. Es allí donde Edge espera encontrarlo cuando se implemente.
Especifica el objetivo de Node.js con ScriptTarget
La clave para integrar Node.js en un proxy es especificar el elemento <ScriptTarget> en el archivo en formato XML del extremo de destino. En la estructura de archivos del proxy, este archivo en formato XML se encuentra en apiproxy/targets. De forma predeterminada, el nombre del archivo es default.xml.
Para contextualizar, considera que un extremo de destino suele apuntar a un servicio de backend de algún tipo. En este caso, llegamos al servicio de destino ficticio de Apigee. Una definición de extremo de destino se ve de la siguiente manera:
<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>
El elemento <HTTPTargetConnection> especifica la URL del servicio de backend, el servicio de destino ficticio de Apigee.
Sin embargo, en el caso de Node.js, la aplicación de Node.js en sí es el objetivo. Puedes especificar esto con <ScriptTarget> en el archivo apiproxy/targets/default.xml.
En lugar de que el destino use el elemento <HTTPTargetConnection> para especificar la URL de un servicio de backend, se hace referencia a la aplicación de Node.js directamente con un elemento <ScriptTarget>, de la siguiente manera:
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://server.js</ResourceURL> </ScriptTarget> <PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> </TargetEndpoint>
El parámetro <ResourceURL> siempre debe tener el prefijo node://
, seguido del nombre de la secuencia de comandos principal de Node.js. Además, como se señaló anteriormente, los recursos de Node.js deben residir en /apiproxy/resources/node
en el alcance del proxy de API.
Puedes establecer parámetros adicionales en ScriptTarget. Para obtener más información, consulta Configuración avanzada de ScriptTarget.
A los efectos de este ejemplo, este es el código fuente del archivo principal de Node.js, llamado server.js. Es el servidor HTTP básico que muestra “Hello World!” cuando recibe una solicitud:
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'); });
En resumen, si suponemos que la aplicación principal de Node.js se implementa en un archivo llamado server.js
y que las configuraciones de extremos tienen el nombre default.xml
, el proxy de API que contiene la secuencia de comandos de Node.js tendrá la siguiente estructura:
/apiproxy/proxyName.xml /apiproxy/proxies/default.xml /apiproxy/targets/default.xml /apiproxy/resources/node/server.js
Prepárate para implementar la aplicación
La mayoría de las apps de Node.js tienen archivos de dependencia y, además, incluyen un archivo package.json en el directorio base. En este caso, la práctica recomendada es ejecutar la utilidad npm para garantizar que el directorio node_modules de nivel superior se propague con las dependencias antes de la implementación. Si hay dependencias remotas que no se incluyen en node_modules, tu aplicación de Node.js no se ejecutará en Edge.
Puedes recuperar fácilmente todas las dependencias en tu sistema de archivos con la utilidad npm:
- Desde el directorio base de tu aplicación de Node.js, ejecuta el siguiente comando:
$ npm install
o
$ npm update
Cuando se instalen las dependencias, estarás listo para implementar tu proxy en Edge.
Implementa la app de Node.js en Apigee Edge
Antes de que realices la implementación, deberás saber el nombre de tu organización, el nombre de usuario y la contraseña de tu cuenta de Apigee Edge. Necesitas esta información para formar correctamente el comando de la herramienta de implementación.
Este es el comando. Se supone (con la marca -d) que estás en el directorio raíz de tu proxy. Si tu proxy se llama foo, ingresa este comando desde el directorio foo:
$ apigeetool deployproxy -u username -p password -o org -e test -n hellonode -d .Para obtener información sobre el significado de cada una de las marcas de comando, haz lo siguiente:
$ apigeetool deployproxy -h
A continuación, se incluye un breve resumen:
- -n Esta marca te permite especificar el nombre del proxy que se creará cuando se implemente la aplicación. Verás este nombre en la IU de administración.
- -d Especifica el directorio raíz del proxy de API.
- -o, -e, -u y -p especifican el nombre de la organización, el entorno de implementación, el nombre de usuario y la contraseña.
Prueba el nuevo proxy de API
Acabas de agregar una app de Node.js a un proxy de API existente y lo implementaste en Apigee Edge. Para probarlo, ejecuta este comando cURL. Suponemos que se usa la ruta de acceso base predeterminada (/) (la ruta de acceso base se especifica en el archivo de configuración del extremo del proxy). Asegúrate de reemplazar el nombre de tu organización por org_name. Si no tienes instalado cURL, puedes ingresar la URL en un navegador.
$ curl http://org_name-test.apigee.net/
Hello, Node!
Visualiza el nuevo proxy en la IU de administración
Accede a tu cuenta de Apigee Edge y ve a la página de proxies de API. Allí verás el proxy llamado "hellonode".
Haz clic en "hellonode" para ver los detalles del proxy. En la vista Desarrollar, puedes ver el código fuente que subiste, agregar políticas, editar flujos, etcétera.
Próximos pasos
Si deseas obtener información para depurar aplicaciones de Node.js que se ejecutan en Apigee Edge, consulta Depuración y solución de problemas de proxies de Node.js.