Agrega Node.js a un proxy de API existente

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

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 base /apiproxy y subcarpetas para recursos, destinos y proxies. La carpeta apiproxy/resources/node es donde se deben colocar los archivos de Node.js. Las otras carpetas contienen archivos XML que definen los extremos de proxy y de destino, el 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 de proxy de API.

Solo 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 implementa.

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 de proxy, este archivo en formato XML se encuentra en apiproxy/targets. De forma predeterminada, el nombre de archivo es default.xml.

Para el contexto, 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 destino. Puedes especificar esto con <ScriptTarget> en el apiproxy/targets/default.xml archivo.

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> como se muestra a continuación:

<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 indicó anteriormente, los recursos de Node.js deben residir en /apiproxy/resources/node en el alcance del proxy de API.

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

Para los fines de este ejemplo, aquí está 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, suponiendo que la aplicación principal de Node.js se implemente en un archivo llamado server.js, y que las configuraciones de extremos se llamen default.xml, el proxy de API que contiene la secuencia de comandos de Node.js tiene 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 e incluyen un archivo package.json en el directorio base. En este caso, la mejor práctica es ejecutar la utilidad npm para garantizar que el directorio node_modules de nivel superior se complete 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 lo siguiente:
$ npm install 

o

$ npm update

Cuando se instalen las dependencias, podrás implementar tu proxy en Edge.

Implementa la app de Node.js en Apigee Edge

Antes de la implementación, deberás conocer el nombre de tu organización, el nombre de usuario y la contraseña para 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 foo directorio:

$ 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

Para obtener un resumen rápido, haz lo siguiente:

  • -n Esta marca te permite especificar el nombre del proxy que se creará cuando se implemente la app. 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 está envuelta en un proxy de API, implementada en Edge y ejecutada. Está esperando solicitudes y lista para probarse.

Prueba el nuevo proxy de API

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 de proxy). Asegúrate de sustituir 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 Proxies de API. Verás el proxy llamado "hellonode" allí.

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

Para obtener información sobre la depuración de aplicaciones de Node.js que se ejecutan en Apigee Edge, consulta Depuración y solución de problemas de proxies de Node.js.