Uzyskiwanie dostępu do usługi limitów w Node.js

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Wstęp

W tym temacie wyjaśniamy, jak używać apigee-access do uzyskiwania dostępu do usługi limitów Apigee Edge z aplikacji Node.js. Dzięki dostępowi apigee możesz stosować i resetować wartości limitów.

Przykład

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

Metody


zastosuj

Modyfikuje ustawienia obiektu Limit. Użyj tej metody, aby zwiększać lub zmniejszać limit, zmieniać przedziały czasu i wprowadzać inne konfiguracje.

Wykorzystanie

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

Przykład

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

Parametry

Metoda apply() przyjmuje 2 parametry – obiekt i funkcję:

(1) Pierwszy parametr to obiekt JSON z tymi polami:

  • identifier (ciąg znaków, wymagany): unikalny identyfikator zasobnika z limitami. W praktyce może to być identyfikator aplikacji, adres IP lub nazwa użytkownika.
  • timeUnit (ciąg znaków, wymagany): czas, przez jaki zasobnik limitu będzie akumulowany do momentu zresetowania. Prawidłowe wartości to „minute”, „hour”, „day”, „week” i „month”.
  • allow (liczba, wymagana): maksymalna wartość zasobnika limitu. Ta wartość zostanie połączona z bieżącą wartością, aby zwrócić uwagę na to, czy limit został osiągnięty.
  • interval (liczba, opcjonalnie): łącznie z wartością „timeUnit” pozwala określić, po jakim czasie limit zostanie zresetowany. Wartością domyślną jest 1. Ustaw większą wartość, aby zezwolić na limity, takie jak „2 godziny” „3 tygodnie” itd.
  • weight (liczba, opcjonalnie): wartość, o którą zwiększa się limit. Wartość domyślna to 1.

(2) Drugi argument to funkcja wywołania zwrotnego z tymi 2 argumentami:

  • Pierwszy argument to obiekt Błąd, jeśli nie można zwiększyć limitu, lub niezdefiniowany, jeśli operacja się powiodła.
  • Drugi obiekt to obiekt zawierający te pola:
    • used (liczba): bieżąca wartość zasobnika limitu.
    • allowed (liczba): maksymalna wartość zasobnika limitu przed uznaniem, że limit zostanie przekroczony. Ta sama wartość została przekazana jako „allow” w obiekcie żądania.
    • isAllowed (wartość logiczna): jeśli w limicie zostało miejsce, tak długo, jak wartość „used” jest mniejsza lub równa „allow”.
    • expiryTime (długi): sygnatura czasowa (w milisekundach od formatu 1970), kiedy zasobnik limitu zostanie zresetowany.
    • timestamp (długi): sygnatura czasowa aktualizacji limitu.

Przykład

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

Resetuj

Aby zresetować limit do zera, wywołaj limit.reset(). Ta metoda przyjmuje 2 parametry:
  • Obiekt JSON z tymi polami:
    • identifier (ciąg znaków, wymagany): unikalny identyfikator zasobnika limitów. W praktyce może to być identyfikator aplikacji, adres IP lub nazwa użytkownika.
    • timeUnit (ciąg znaków, wymagany): jak długo będzie akumulowany zasobnik limitu do momentu zresetowania. Prawidłowe wartości to „minute”, „hour”, „day”, „week” i „month”.
    • interwał (liczba, opcjonalnie): połączony z parametrem „timeUnit” w celu określenia czasu, po którym limit zostanie zresetowany. Wartością domyślną jest 1. Ustaw większą wartość, aby umożliwić resetowanie, na przykład „2 godziny” „3 tygodnie” itd.
  • funkcji wywołania zwrotnego:
    • Jeśli resetowanie się nie powiedzie, wywołanie zwrotne przyjmuje jako pierwszy parametr obiekt Error.

Przypadek użycia limitu zaawansowanego

Podczas tworzenia limitu możesz uwzględnić opcjonalny obiekt „options”. Ten obiekt ma 1 opcjonalny parametr:
  • syncInterval (liczba, opcjonalnie): liczba sekund, przez które implementacja limitu rozproszonego synchronizuje swój stan w sieci. Wartością domyślną jest 10.
Użyj tego parametru, aby zoptymalizować wydajność limitu rozproszonego w sieci. Pamiętaj, że niższe ustawienie zmniejszy wydajność i znacznie wydłuży czas oczekiwania operacji „apply”. Domyślne ustawienie 10 sekund jest dobrym ustawieniem w wielu aplikacjach. Odstęp czasu może mieć wartość zero, co oznacza, że stan jest synchronizowany przy każdym wywołaniu metody „apply”. W tym przypadku wydajność będzie dużo gorsza.