Accéder au service de quotas dans Node.js

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

Introduction

Cette rubrique explique comment utiliser le 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


appliquer

Modifie les paramètres d'un objet Quota. Utilisez cette méthode pour incrémenter ou décrémenter 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() utilise deux paramètres, un objet et une fonction:

(1) Le premier paramètre est un objet JSON contenant ces champs:

  • identifier (chaîne, obligatoire): identifiant unique du bucket de quota. En pratique, il peut s'agir d'un ID application, d'une adresse IP ou d'un nom d'utilisateur.
  • timeUnit (chaîne, obligatoire): durée d'accumulation du bucket par le quota jusqu'à sa réinitialisation. Les valeurs valides sont "minute", "heure", "jour", "semaine" et "mois".
  • allow (nombre, obligatoire): valeur maximale du bucket de quota. Cette valeur sera combinée à la valeur actuelle pour indiquer si le quota a réussi.
  • intervalle (nombre, facultatif): associé à "timeUnit" pour déterminer le délai de 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 d'incrémentation du quota. La valeur par défaut est 1.

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

  • 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 second est un objet qui contient 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 la requête.
    • isAllowed (booléen): s'il reste de l'espace dans le quota, "true" tant que la valeur "used" est inférieure ou égale à "allowed".
    • expiryTime (longue): horodatage, en millisecondes depuis le format 1970, correspondant au moment où le bucket de quota est réinitialisé.
    • timestamp (long): code temporel de la mise à jour du quota.

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'); }
}

réinitialiser

Pour réinitialiser le quota à zéro, appelez quota.reset(). Cette méthode nécessite deux paramètres:
  • Un objet JSON comportant ces champs:
    • identifier (chaîne, obligatoire): identifiant unique du bucket de quota. En pratique, il peut s'agir d'un ID application, d'une adresse IP ou d'un nom d'utilisateur.
    • timeUnit (chaîne obligatoire): durée d'accumulation du bucket par le quota jusqu'à sa réinitialisation. Les valeurs valides sont "minute", "hour", "day", "week" et "month".
    • intervalle (nombre, facultatif): associé à "timeUnit" pour déterminer le délai de 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 (par exemple, "deux heures", "trois semaines", etc.).
  • Une fonction de rappel:
    • Le rappel utilise 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 la mise en œuvre de quotas distribués 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égrade les performances et augmente considérablement la latence de l'opération "apply". Le paramètre par défaut (10 secondes) convient à de nombreuses applications. L'intervalle peut être défini sur zéro, ce qui signifie que l'état est synchronisé à chaque fois que la commande "apply" est appelée. Dans ce cas, les performances seront bien moins bonnes.