Ajouter Node.js à un proxy d'API existant

Vous consultez la documentation d'Apigee Edge.
Accédez à la documentation sur Apigee X.
info

Introduction

Cette section 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 cet article, nous supposons 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 de base /apiproxy et des sous-dossiers pour les ressources, les cibles et les proxys. Le dossier apiproxy/resources/node est l'emplacement où doivent être placés les fichiers Node.js. Les autres dossiers contiennent des fichiers XML qui définissent les points de terminaison proxy et cibles, le flux de 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 du proxy 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 à le trouver lorsqu'il est déployé.

Spécifier la cible Node.js avec ScriptTarget

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

Pour information, un point de terminaison cible pointe généralement vers un service de backend. Dans ce cas, nous accédons au service cible fictif d'Apigee. Une définition de 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 d'Apigee.

Toutefois, dans le cas de Node.js, l'application Node.js elle-même est la cible. Vous le spécifiez 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 suit:

<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 résider dans /apiproxy/resources/node au niveau de la portée du proxy d'API.

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

Pour 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 appelé 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 possèdent des fichiers de dépendances et incluent un fichier package.json dans le répertoire de base. Dans ce cas, il est recommandé d'exécuter l'utilitaire npm pour vous assurer que le répertoire de premier niveau node_modules est renseigné avec 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 de 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 pouvez déployer votre proxy dans 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, votre nom d'utilisateur et le mot de passe de votre compte Apigee Edge. Vous avez besoin de ces informations pour former correctement la commande de l'outil de déploiement.

Voici la commande. Il suppose (avec l'option -d) que vous vous trouvez dans le répertoire racine de votre proxy. Si votre proxy s'appelle foo, saisissez cette commande à 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 chacune des options de commande, procédez comme suit:

$ apigeetool deployproxy -h

En résumé:

  • -n : cet indicateur vous permet de spécifier le nom du proxy qui sera créé lors du déploiement de l'application. Ce nom s'affiche 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 les 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 le déployer 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 vous n'avez pas installé cURL, vous pouvez saisir l'URL dans un navigateur.

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

Afficher le nouveau proxy dans l'UI de gestion

Connectez-vous à votre compte Apigee Edge et accédez à la page Proxies de l'API. Le proxy appelé "hellonode" s'affiche.

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

Étapes suivantes

Pour savoir comment déboguer des applications Node.js exécutées sur Apigee Edge, consultez Déboguer et dépanner les mandataires Node.js.