Agrega Node.js a un proxy de API existente

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
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 deseas 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 /apiproxy base y subcarpetas de recursos, destinos y proxies. La carpeta apiproxy/resources/node es donde se deben colocar los archivos Node.js. Las otras carpetas contienen archivos en formato XML que definen los extremos proxy y de destino, el flujo de proxy, los 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 de proxy de API.

Recuerda que cualquier código de Node.js que forme parte del proxy debe colocarse en /apiproxy/resources/node. Ahí es donde Edge espera encontrarlo cuando se implemente.

Especifica el destino 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 XML se encuentra en apiproxy/targets. De forma predeterminada, el nombre del archivo es default.xml.

Para contextualizar, ten en cuenta que un extremo de destino generalmente apunta a un servicio de backend de algún tipo. En este caso, seleccionamos el servicio de destino simulado 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 simulado de Apigee.

Sin embargo, en el caso de Node.js, la aplicación de Node.js en sí es el destino. Especifica 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 directamente a la aplicación de Node.js 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 mencionó antes, los recursos de Node.js deben residir en /apiproxy/resources/node en el alcance del proxy de la API.

Puedes establecer parámetros adicionales en ScriptTarget. Para obtener más información, consulta Configuración avanzada de ScriptTarget.

A los fines de este ejemplo, este es el código fuente del archivo principal de Node.js, denominado 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 del extremo 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 asegurarte de que el directorio node_modules de nivel superior esté propagado con las dependencias antes de la implementación. Si hay dependencias remotas que no están incluidas 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:

  1. 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á todo listo para implementar tu proxy en Edge.

Implementa la app de Node.js en Apigee Edge

Antes de la implementación, debes saber el nombre de la 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. 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 marca de comando, haz lo siguiente:

$ apigeetool deployproxy -h

Para obtener 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.
Eso es todo. Tu app de Node.js se une a un proxy de API, se implementa en Edge y se ejecuta. Está a la espera de solicitudes y listo para probarse.

Prueba el proxy de API nuevo

Acabas de agregar una app de Node.js a un proxy de API existente y de implementar el proxy en Apigee Edge. Para probarlo, ejecuta este comando cURL. Suponemos que se usa la ruta base predeterminada (/) (la ruta base se especifica en el archivo de configuración del extremo del proxy). Asegúrate de sustituir el nombre de tu organización por org_name. Si no tienes cURL instalado, puedes ingresar la URL en un navegador.

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

Visualiza el proxy nuevo en la IU de administración

Accede a tu cuenta de Apigee Edge y ve a la página Proxies de API. Verás el proxy llamado “hellonode” en la lista.

Haz clic en “hellonode” para ver los detalles del proxy. En la vista Desarrollo, 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.