Доступ к службе квот в Node.js

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

Введение

В этой теме объясняется, как использовать 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-объект со следующими полями:

  • Идентификатор (строка, обязательно): Уникальный идентификатор квоты. На практике это может быть идентификатор приложения, IP-адрес или имя пользователя.
  • timeUnit (строка, обязательно): Сколько времени будет накапливаться квота до ее сброса. Допустимые значения: "минута", "час", "день", "неделя" и "месяц".
  • allow (число, обязательно): Максимальное значение для квоты. Это значение будет объединено с текущим значением для возврата информации о том, успешно ли выполнена квота.
  • interval (число, необязательно): В сочетании с параметром "timeUnit" определяет, через какое время квота будет сброшена. Значение по умолчанию — 1. Установите большее значение, чтобы разрешить квоты, например, "два часа", "три недели" и так далее.
  • Вес (число, необязательно): значение, на которое увеличивается квота. По умолчанию — 1.

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

  • Первый аргумент — это объект Error, если квоту не удаётся увеличить, или undefined, если операция прошла успешно.
  • Второй объект содержит следующие поля:
    • Использовано (число): Текущее значение квоты.
    • allowed (number): Максимальное значение квоты, при превышении которого квота считается исчерпанной. В объекте запроса было передано то же значение, что и "allow".
    • isAllowed (логическое значение): Если в квоте еще есть место — true, если "used" меньше или равно "allowed".
    • expiryTime (long): Временная метка в миллисекундах с 1970 года, когда будет сброшена квота.
    • метка времени (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-объект со следующими полями:
    • Идентификатор (строка, обязательно): Уникальный идентификатор квоты. На практике это может быть идентификатор приложения, IP-адрес или имя пользователя.
    • timeUnit (строка, обязательно): До какого времени будет накапливаться квота после ее сброса. Допустимые значения: "минута", "час", "день", "неделя" и "месяц".
    • interval (число, необязательно): В сочетании с параметром "timeUnit" определяет, через какое время квота будет сброшена. Значение по умолчанию — 1. Установите большее значение, чтобы разрешить сброс квоты, например, "два часа", "три недели" и так далее.
  • Функция обратного вызова:
    • Функция обратного вызова принимает в качестве первого параметра объект Error, если сброс не удался.

Вариант использования расширенных квот

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