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

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

Wprowadzenie

W tym temacie wyjaśniamy, jak za pomocą instancji apigee-access uzyskać dostęp do usługi limitów Apigee Edge z aplikacji Node.js. Korzystając z apigee-access, możesz zastosować 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


stosować

Modyfikuje ustawienia obiektu Limit. Za pomocą tej metody możesz zwiększać lub zmniejszać limit, zmieniać przedziały czasowe i dokonywać innych konfiguracji.

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, wymagany): niepowtarzalny identyfikator puli limitu. W praktyce może to być identyfikator aplikacji, adres IP lub nazwa użytkownika.
  • timeUnit (ciąg znaków, wymagany): czas, przez jaki zasobnik z limitem będzie się gromadzić, dopóki nie zostanie zresetowany. 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ć informację, czy limit został przekroczony.
  • interval (liczba, opcjonalnie): łączy się z „timeUnit” w celu określenia czasu, po którym limit ma zostać zresetowany. Wartość domyślna to 1. Ustaw większą wartość, aby umożliwić użycie limitów takich jak „2 godziny”, „3 tygodnie” itp.
  • weight (liczba, opcjonalnie): wartość, o którą ma zostać zwiększona kwota. Wartość domyślna to 1.

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

  • Pierwszy argument to obiekt Error, jeśli nie można zwiększyć limitu, lub nieokreślony, jeśli operacja się powiodła.
  • Drugi to obiekt zawierający te pola:
    • used (liczba): bieżąca wartość zasobnika limitu.
    • allowed (liczba): maksymalna wartość grupy limitu, zanim zostanie on przekroczony. Ta sama wartość została przekazana jako „allow” w obiekcie żądania.
    • isAllowed (wartość logiczna): jeśli w ramach limitu jest jeszcze miejsce – wartość „true”, o ile „used” jest mniejsze lub równe „allowed”.
    • expiryTime (long): sygnatura czasowa w milisekundach od 1970 r., w której limit zostanie zresetowany.
    • timestamp (długi): sygnatura czasowa, w której limit został zaktualizowany.

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

resetowanie

Aby zresetować limit do zera, wywołaj metodę constraint.reset(). Metoda ta wymaga 2 parametrów:
  • Obiekt JSON z tymi polami:
    • identifier (ciąg, wymagany): niepowtarzalny identyfikator puli limitu. W praktyce może to być identyfikator aplikacji, adres IP lub nazwa użytkownika.
    • timeUnit (string, wymagany): czas, przez jaki bucket limitu będzie gromadzić dane, do momentu zresetowania. Prawidłowe wartości to „minute”, „hour”, „day”, „week” i „month”.
    • interval (liczba, opcjonalnie): w połączeniu z parametrem „timeUnit” określa, ile czasu przed zresetowaniem limitu. Wartość domyślna to 1. Ustaw większą wartość, aby umożliwić resetowanie. Możesz użyć takich wartości jak „2 godziny”, „3 tygodnie” itp.
  • Funkcja wywołania zwrotnego:
    • Jeśli reset się nie powiedzie, wywołanie zwrotne przyjmuje obiekt Error jako pierwszy parametr.

Zaawansowane przypadki użycia limitu

Podczas tworzenia limitu możesz uwzględnić opcjonalny obiekt „options”. Ten obiekt ma 1 opcjonalny parametr:
  • syncInterval (liczba, opcjonalnie): liczba sekund, w których implementacja limitu rozproszonego synchronizuje swój stan w sieci. Wartością domyślną jest 10.
Używaj tego parametru, aby optymalizować skuteczność rozłożonej puli w sieci. Pamiętaj, że niższe ustawienie obniża wydajność i znacznie zwiększa czas oczekiwania operacji stosowania. Domyślne ustawienie, czyli 10 sekund, jest dobrym ustawieniem dla wielu aplikacji. Interval może być ustawiony na wartość 0, co oznacza, że stan jest synchronizowany za każdym razem, gdy zostanie wywołana metoda apply. W tym przypadku wydajność będzie znacznie gorsza.