Accéder aux variables de flux dans Node.js

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

Introduction

Utilisez le module apigee-access pour accéder au flux Apigee Edge variables dans une application Node.js. Le module comporte des méthodes permettant d'obtenir, de définir et de supprimer des variables. Elle comporte également une méthode pratique permettant de définir une variable entière.

Les variables de flux existent dans le contexte d'un flux de proxy d'API. Certaines variables sont "intégrées" à Périphérie. D'autres sont créées lors de l'exécution des stratégies, et vous pouvez créer vos propres variables. Flux les variables sont généralement utilisées pour transmettre des données d'une stratégie à une autre et pour définir des conditions dans les flux conditionnels. Pour plus d'informations sur les variables de flux, voir Variables de flux et conditions d'utilisation.

Pour une présentation du module apigee-access et de ses autres fonctionnalités, consultez Utiliser le module apigee-access.

Exemple fonctionnel

Imaginez qu'une règle Edge exécutée sur le chemin du flux de requête définit une variable appelée AuthenticatedUserId Le code suivant accède à cette variable et l'imprime journal. De plus, ce code définit une variable. Vous pouvez ensuite accéder à cette variable à partir d'une stratégie, comme illustré ci-dessous.

var http = require('http');
var apigee = require('apigee-access');

http.createServer(function (request, response) {
  // The request parameter must be a request object that came from the http module
  var userId = apigee.getVariable(request, 'AuthenticatedUserId');
  apigee.setVariable(request, "custom.foo", "Bar");
  console.log('Authenticated Apigee User ID is %s', userId);
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

Vous pouvez copier ce code dans un fichier JavaScript, le déployer sur Edge et l'essayer. Appelez la méthode fichier server.js. Pour la déployer, utilisez la commande suivante:

apigeetool deploynodeapp -u username -p password -o myorg -e test -n access -d . -m server.js -b /access

Après avoir déployé l'application sur Edge, ajoutez une règle AffectMessage avec le code suivant : au flux de requêtes ProxyEndpoint:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="AddUserId">
    <DisplayName>AddUserId</DisplayName>
    <FaultRules/>
    <Properties/>  
    <AssignVariable>
        <Name>AuthenticatedUserId</Name>
        <Value>ntesla</Value>
        <Ref/>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

Ensuite, associez une autre règle assignMessage au flux préliminaire de réponse TargetEndpoint:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="SetHeader">
    <DisplayName>SetHeader</DisplayName>
    <FaultRules/>
    <Properties/>
    <Set>
        <Headers>
            <Header name="MySpecialHeader">{custom.foo}</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

Vous pouvez appeler le proxy comme suit:

curl -i http://myorg-test.apigee.net/access

Maintenant, accédez à la page du proxy d'accès dans l'interface utilisateur de gestion et affichez la Développer. Cliquez sur Journaux Node.js pour afficher la sortie du journal de au proxy. Si le proxy est correctement configuré, vous pouvez constater que la variable userId a été définie. Vous pouvez également voir que l'en-tête a été défini dans la sortie cURL de votre fenêtre de terminal:

HTTP/1.1 200 OK

Content-Type: text/plain
Date: Tue, 27 05 2014 23:20:52 GMT
MySpecialHeader: Bar
Content-Length: 12
Connection: keep-alive

Méthodes


getVariable

var result = getVariable(httpRequest, name);

Récupère une variable nommée.

Paramètres :

  • httpRequest: objet de requête provenant du module http.
  • name: (chaîne) nom de la variable à récupérer.

Renvoie :

Chaîne ou nombre, selon le type défini à l'aide de setVariable(), lorsqu'il a été que vous avez créés ailleurs, ou lorsqu'une règle l'a créée. Si vous accédez à l'un des Variables Edge prêtes à l'emploi, vous pouvez trouver une liste des types dans la documentation de référence sur les variables. Pour les types de variables créées par des règles, reportez-vous à la rubrique de référence du règlement en question.

Exemples :

var apigee = require('apigee-access');
    // "httpRequest" must be a request object that came from the http module
    var val1 = apigee.getVariable(request, 'TestVariable');
    var val2 = apigee.getVariable(request, 'request.client.ip');

setVariable

setVariable(httpRequest, name, value);

Définit une variable. Certaines variables sont en lecture seule, et la méthode setVariable() génère une exception si vous essayez d'en définir une. Pour déterminer quelles variables sont en lecture seule, consultez les Variables Documentation de référence.

Paramètres :

  • httpRequest: objet de requête provenant du module http.
  • name: (chaîne) nom de la variable à récupérer.
  • value: peut être un nombre, une chaîne, une valeur booléenne, une valeur nulle ou non défini.

Exemple :

var apigee = require('apigee-access');
    apigee.setVariable(request, 'TestVariable', 'bar');
    // This will throw an exception because client.ip is read-only.
    apigee.setVariable(request, 'client.ip');
    

setIntVariable

setIntVariable(httpRequest, name, value);

La méthode setIntVariable() est une méthode pratique qui, d'abord, convertit le paramètre de valeur par coercition. un entier, puis le définit.

Paramètres :

  • httpRequest: objet de requête provenant du module http.
  • name: (chaîne) nom de la variable à définir.
  • value: le paramètre "value" doit être une chaîne ou un nombre.

Exemple :

var apigee = require('apigee-access');
// Convert "123" to an integer and set it
apigee.setIntVariable(request, 'TestVariable', '123');
// Use something that's already a number
apigee.setIntVariable(request, 'TestVariable2', 42);

deleteVariable

Supprime une variable nommée. La suppression d'une variable en lecture seule est une erreur. Pour obtenir des variables en lecture seule, consultez la documentation de référence sur les variables.

deleteVariable(httpRequest, name);

Paramètres :

  • httpRequest: objet de requête provenant du module http.
  • name: (chaîne) nom de la variable à supprimer.

Exemple :

  apigee.deleteVariable(request, 'TestVariable');
    // This will throw an exception because client.ip is a read-only variable.
    apigee.deleteVariable(request, 'client.ip');