Accéder au service de quotas dans Node.js

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

Introduction

Cet article explique comment utiliser apigee-access pour accéder au service de quota Apigee Edge à partir d'une application Node.js. Avec apigee-access, vous pouvez appliquer et réinitialiser les valeurs de quota.

Exemple

var apigee = require('apigee-access');
var quota = apigee.getQuota();
quota.apply({ identifier: 'Foo', allow: 10, timeUnit: 'hour' },
    function(err, result) {
         console.log('Quota applied: %j', result);
    });

Méthodes


apply

Modifie les paramètres d'un objet Quota. Utilisez cette méthode pour augmenter ou diminuer le quota, modifier les intervalles de temps et effectuer d'autres configurations.

Utilisation

var apigee = require('apigee-access');
var quota = apigee.getQuota();
quota.apply({parameters}, callback);

Exemple

var apigee = require('apigee-access');
var quota = apigee.getQuota();

        // Apply a quota of 100 requests per hour
        quota.apply({
         identifier: 'Foo',
         timeUnit: 'hour',
         allow: 100
        }, quotaResult);
                
                function quotaResult(err, r) {
                 if (err) { console.error('Quota failed'); }
                }       

Paramètres

La méthode apply() accepte deux paramètres, un objet et une fonction :

(1) Le premier paramètre est un objet JSON avec les champs suivants :

  • identifier (chaîne, obligatoire) : identifiant unique du bucket de quota. En pratique, il peut s'agir d'un ID d'application, d'une adresse IP ou nom d'utilisateur.
  • timeUnit (chaîne, obligatoire) : durée pendant laquelle le bucket de quota bucket s'accumule avant d'être réinitialisé. Les valeurs valides sont "minute", "hour", "day", "week" et "month."
  • allow (nombre, obligatoire) : valeur maximale du bucket de quota. Cette valeur sera combinée à la valeur actuelle pour déterminer si le quota a réussi.
  • interval (nombre, facultatif) : combiné à "timeUnit" pour déterminer la durée avant la réinitialisation du quota. La valeur par défaut est 1. Définissez une valeur plus élevée pour autoriser des quotas tels que "deux heures", "trois semaines", etc.
  • weight (nombre, facultatif) : valeur à ajouter au quota. La valeur par défaut est 1.

(2) Le deuxième argument est une fonction de rappel avec les deux arguments suivants :

  • Le premier argument est un objet Error si le quota ne peut pas être incrémenté, ou non défini si l'opération a réussi.
  • Le deuxième est un objet contenant les champs suivants :
    • used (nombre) : valeur actuelle du bucket de quota.
    • allowed (nombre) : valeur maximale du bucket de quota avant que le quota ne soit considéré comme dépassé. La même valeur a été transmise en tant que "allow" dans l'objet de requête.
    • isAllowed (booléen) : indique s'il reste de la place dans le quota (vrai tant que "used" est inférieur ou égal à "allowed").
    • expiryTime (long) : code temporel, en millisecondes depuis le format 1970, lorsque le bucket de quota sera réinitialisé.
    • timestamp (long) : code temporel auquel le quota a été mis à jour.

Exemple

var apigee = require('apigee-access');
var quota = apigee.getQuota();
 

// Apply a quota of 100 requests per hour
quota.apply({
  identifier: 'Foo',
  timeUnit: 'hour',
  allow: 100
}, quotaResult);
 

// Apply a quota of 500 requests per five minutes
quota.apply({
  identifier: 'Bar',
  timeUnit: 'minute',
  interval: 5,
  allow: 500
}, quotaResult);


// Increment the quota by a value of 10
quota.apply({
  identifier: 'Foo',
  timeUnit: 'hour',
  allow: 100,
  weight: 10
}, quotaResult);


function quotaResult(err, r) {
  if (err) { console.error('Quota failed'); }
}

reset

Pour réinitialiser le quota à zéro, appelez quota.reset(). Cette méthode accepte deux paramètres :
  • Objet JSON avec les champs suivants :
    • identifier (chaîne, obligatoire) : identifiant unique du bucket de quota. En pratique, il peut s'agir d'un ID d'application, d'une adresse IP ou d'un nom d'utilisateur.
    • timeUnit (chaîne, obligatoire) : durée pendant laquelle le bucket de quota s'accumule avant d'être réinitialisé. Les valeurs valides sont "minute", "hour", "day", "week" et "month".
    • interval (nombre, facultatif) : combiné à "timeUnit" pour déterminer la durée avant la réinitialisation du quota. La valeur par défaut est 1. Définissez une valeur plus élevée pour autoriser des délais de réinitialisation tels que « deux heures », « trois semaines », etc.
  • Fonction de rappel :
    • Le rappel accepte un objet Error comme premier paramètre si la réinitialisation échoue.

Cas d'utilisation avancé des quotas

Lorsque vous créez un quota, vous pouvez inclure un objet "options" facultatif. Cet objet comporte un paramètre facultatif :
  • syncInterval (nombre, facultatif) : nombre de secondes pendant lesquelles l' implémentation du quota distribué synchronise son état sur le réseau. La valeur par défaut est 10.
Utilisez ce paramètre pour optimiser les performances du quota distribué sur le réseau. N'oubliez pas qu'un paramètre plus faible dégradera les performances et augmentera considérablement la latence de l'opération "apply". Le paramètre par défaut de 10 secondes est un bon paramètre pour de nombreuses applications. L'intervalle peut être défini sur zéro, ce qui signifie que l'état est synchronisé chaque fois que "apply" est appelé. Les performances seront bien pires dans ce cas.