Как получить доступ к сервису квот в Node.js

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Введение

В этой статье рассказывается, как использовать apigee-access для доступа к сервису квот Apigee Edge из приложения Node.js. С помощью apigee-access можно применять и сбрасывать значения квот.

Пример

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

Методы


применить

Изменяет настройки объекта квоты. Этот метод позволяет увеличивать или уменьшать квоту, изменять временные интервалы и выполнять другие настройки.

Использование

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

Пример

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

Параметры

Метод apply() принимает два параметра: объект и функцию.

1. Первый параметр – это объект JSON со следующими полями:

  • identifier (строка, обязательно): уникальный идентификатор сегмента квоты. На практике это может быть идентификатор приложения, IP-адрес или имя пользователя.
  • timeUnit (строка, обязательный параметр). Период времени, в течение которого накапливается квота, прежде чем она будет сброшена. Допустимые значения: "minute", "hour", "day", "week" и "month".
  • allow (число, обязательно). Максимальное значение для квоты. Это значение будет объединено с текущим, чтобы определить, достигнута ли квота.
  • interval (число, необязательно). Вместе с параметром timeUnit определяет, как долго будет действовать квота до сброса. Значение по умолчанию – 1. Установите большее значение, чтобы разрешить квоты, например "два часа", "три недели" и т. д.
  • weight (число, необязательный параметр). Значение, на которое нужно увеличить квоту. Значение по умолчанию – 1.

2. Второй аргумент – это функция обратного вызова с двумя аргументами:

  • Первый аргумент – это объект Error, если квоту увеличить нельзя, или undefined, если операция выполнена успешно.
  • Второй – объект, содержащий следующие поля:
    • used (число) – текущее значение квоты.
    • allowed (число) – максимальное значение сегмента квоты, при котором квота считается превышенной. В объекте запроса было передано то же значение, что и в параметре allow.
    • isAllowed (логическое значение). Если в квоте есть свободное место, возвращается значение true, пока значение параметра used меньше или равно значению параметра allowed.
    • expiryTime (long) – временная метка в миллисекундах с 1970 г., когда будет сброшен сегмент квоты.
    • timestamp (long) – временная метка, в которой указано время обновления квоты.

Пример

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

сброс

Чтобы сбросить квоту до нуля, вызовите quota.reset(). Этот метод принимает два параметра:
  • Объект JSON со следующими полями:
    • identifier (строка, обязательно): уникальный идентификатор сегмента квоты. На практике это может быть идентификатор приложения, IP-адрес или имя пользователя.
    • timeUnit (строка, обязательный параметр). Период времени, в течение которого накапливается квота, прежде чем она будет сброшена. Допустимые значения: "minute", "hour", "day", "week" и "month".
    • interval (число, необязательно). Вместе с параметром timeUnit определяет, как долго до сброса квоты. Значение по умолчанию – 1. Установите большее значение, чтобы разрешить сброс времени, например "два часа", "три недели" и т. д.
  • Функция обратного вызова:
    • Если сброс не удастся, в качестве первого параметра обратного вызова будет передан объект Error.

Расширенное использование квот

При создании квоты можно добавить необязательный объект "options". У этого объекта есть один необязательный параметр:
  • syncInterval (число, необязательно). Количество секунд, через которое реализация распределенной квоты синхронизирует свое состояние в сети. Значение по умолчанию – 10.
Этот параметр позволяет оптимизировать использование распределенной квоты в сети. Учтите, что более низкое значение ухудшит производительность и значительно увеличит задержку операции "Применить". Значение по умолчанию (10 секунд) подходит для большинства приложений. Интервал может быть равен нулю, и тогда состояние будет синхронизироваться каждый раз, когда вызывается функция apply. В этом случае производительность будет значительно ниже.