Ajouter Node.js à un proxy d'API existant

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Introduction

Cette rubrique explique comment ajouter une application Node.js à un proxy existant sur votre système de fichiers local et comment déployer le proxy sur Apigee Edge.

Préparer votre environnement de développement

Dans cette rubrique, nous partons du principe que vous avez déjà configuré un environnement de développement proxy sur votre système local et que vous souhaitez y intégrer une application Node.js.

La structure de base d'une application proxy incluant une application Node.js suit le modèle illustré dans la figure ci-dessous, avec un dossier /apiproxy de base et des sous-dossiers pour les ressources, les cibles et les proxys. Le dossier apiproxy/resources/node contient les fichiers Node.js. Les autres dossiers contiennent des fichiers XML qui définissent les points de terminaison du proxy et cibles, le flux proxy, les flux conditionnels, etc. Pour une description plus complète de la structure du proxy d'API, consultez la documentation de référence sur la configuration des proxys d'API.

N'oubliez pas que tout code Node.js faisant partie du proxy doit être placé sous /apiproxy/resources/node. C'est là que Edge s'attend à la trouver lors de son déploiement.

Spécifier la cible Node.js avec ScriptTarget

La clé pour intégrer Node.js à un proxy consiste à spécifier l'élément<ScriptTarget> dans le fichier XML du point de terminaison cible. Dans la structure de fichiers proxy, ce fichier XML se trouve dans apiproxy/targets. Par défaut, le nom de fichier est default.xml.

Pour plus de contexte, tenez compte du fait qu'un point de terminaison cible pointe généralement vers un service de backend quelconque. Dans le cas présent, nous appelons le service cible fictif Apigee. La définition d'un point de terminaison cible se présente comme suit:

<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>

L'élément <HTTPTargetConnection> spécifie l'URL du service de backend, le service cible fictif Apigee.

Toutefois, dans le cas de Node.js, l'application Node.js elle-même est la cible. Vous spécifiez cette valeur avec <ScriptTarget> dans le fichier apiproxy/targets/default.xml.

Au lieu que la cible utilise l'élément <HTTPTargetConnection> pour spécifier l'URL d'un service de backend, l'application Node.js est référencée directement à l'aide d'un élément <ScriptTarget>, comme ceci:

<TargetEndpoint name="default">
    <ScriptTarget>
         <ResourceURL>node://server.js</ResourceURL>
    </ScriptTarget>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
</TargetEndpoint>

Le paramètre <ResourceURL> doit toujours être précédé de node://, suivi du nom du script Node.js principal. Comme indiqué précédemment, les ressources Node.js doivent se trouver dans /apiproxy/resources/node, au niveau du champ d'application du proxy d'API.

Vous pouvez définir des paramètres supplémentaires dans ScriptTarget. Pour en savoir plus, consultez la section Configuration avancée de ScriptTarget.

Pour les besoins de cet exemple, voici le code source du fichier Node.js principal, appelé server.js. Il s'agit du serveur HTTP de base qui renvoie "Hello World!" lorsqu'il reçoit une requête:

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 résumé, en supposant que l'application Node.js main est mise en œuvre dans un fichier nommé server.js et que les configurations de point de terminaison sont toutes deux nommées default.xml, le proxy d'API contenant le script Node.js présente la structure suivante:

/apiproxy/proxyName.xml
/apiproxy/proxies/default.xml
/apiproxy/targets/default.xml
/apiproxy/resources/node/server.js

Préparer le déploiement de l'application

La plupart des applications Node.js comportent des fichiers de dépendance et incluent un fichier package.json dans le répertoire de base. Dans ce cas, la bonne pratique consiste à exécuter l'utilitaire npm pour vous assurer que le répertoire node_modules de premier niveau contient les dépendances avant le déploiement. Si des dépendances distantes ne sont pas incluses dans node_modules, votre application Node.js ne s'exécutera pas sur Edge.

Vous pouvez facilement récupérer toutes les dépendances sur votre système de fichiers à l'aide de l'utilitaire npm:

  1. Depuis le répertoire de base de votre application Node.js, exécutez la commande suivante:
$ npm install 

ou

$ npm update

Une fois les dépendances installées, vous êtes prêt à déployer votre proxy sur Edge.

Déployer l'application Node.js sur Apigee Edge

Avant de procéder au déploiement, vous devez connaître le nom de votre organisation, ainsi que le nom d'utilisateur et le mot de passe de votre compte Apigee Edge. Vous avez besoin de ces informations pour créer correctement la commande de l'outil de déploiement.

Voici la commande. Elle suppose (avec l'indicateur -d) que vous vous trouvez dans le répertoire racine de votre proxy. Si votre proxy s'appelle foo, saisissez la commande suivante à partir du répertoire foo:

$ apigeetool deployproxy -u username -p password -o org -e test -n hellonode -d .
Pour en savoir plus sur la signification de chacun des indicateurs de commande, procédez comme suit:

$ apigeetool deployproxy -h

Voici un bref récapitulatif:

  • -n : cette option vous permet de spécifier le nom du proxy qui sera créé lors du déploiement de l'application. Ce nom apparaît dans l'interface utilisateur de gestion.
  • -d spécifie le répertoire racine du proxy d'API.
  • -o, -e, -u et -p spécifient le nom de l'organisation, l'environnement de déploiement, le nom d'utilisateur et le mot de passe.
Et voilà. Votre application Node.js est encapsulée dans un proxy d'API, déployée sur Edge et exécutée. Il attend des requêtes et est prêt à être testé.

Tester le nouveau proxy d'API

Vous venez d'ajouter une application Node.js à un proxy d'API existant et de déployer le proxy sur Apigee Edge. Pour le tester, exécutez cette commande cURL. Nous supposons que le chemin de base par défaut (/) est utilisé (le chemin de base est spécifié dans le fichier de configuration du point de terminaison du proxy). Veillez à remplacer org_name par le nom de votre organisation. Si cURL n'est pas installé, vous pouvez saisir l'URL dans un navigateur.

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

Afficher le nouveau proxy dans l'interface utilisateur de gestion

Connectez-vous à votre compte Apigee Edge et accédez à la page "Proxys d'API". Le proxy appelé "hellonode" y est affiché.

Cliquez sur "hellonode" pour afficher les détails du proxy. Dans la vue Développement, vous pouvez voir le code source que vous avez importé, ajouter des règles, modifier des flux, etc.

Étapes suivantes

Pour plus d'informations sur le débogage des applications Node.js exécutées sur Apigee Edge, consultez la page Débogage et dépannage des proxys Node.js.