גישה לשירות המכסות ב-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);
    });

Methods


החלת

משנה את ההגדרות באובייקט של מכסת נפח. אפשר להשתמש בשיטה הזו כדי להגדיל או להקטין את המכסה, לשנות את מרווחי הזמן ולבצע הגדרות אחרות.

שימוש

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) הארגומנט השני הוא פונקציית קריאה חוזרת עם שני הארגומנטים הבאים:

  • הארגומנט הראשון הוא אובייקט שגיאה אם אי אפשר להגדיל את המכסה, או 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. כדי לאפשר זמני איפוס כמו 'שעתיים', 'שלושה שבועות' וכו', צריך להגדיר ערך גדול יותר.
  • פונקציית קריאה חוזרת:
    • אם האיפוס נכשל, הקריאה החוזרת מקבלת אובייקט שגיאה כפרמטר הראשון.

תרחיש מתקדם לדוגמה לשימוש במכסה

כשיוצרים מכסת נפח, אפשר לכלול אובייקט אופציונלי של 'אפשרויות'. לאובייקט הזה יש פרמטר אופציונלי אחד:
  • syncInterval (מספר, אופציונלי): מספר השניות שנדרשות כדי שהטמעה של מכסת שימוש מבוזרת תסנכרן את הסטטוס שלה ברשת. ערך ברירת המחדל הוא 10.
הפרמטר הזה מאפשר לבצע אופטימיזציה של הביצועים של מכסת ההפצה ברשת. חשוב לזכור שהגדרה נמוכה יותר תפגע בביצועים ותגדיל באופן משמעותי את זמן האחזור של פעולת ההחלה. הגדרת ברירת המחדל של 10 שניות היא הגדרה טובה להרבה אפליקציות. אפשר להגדיר את המרווח כ-0, כלומר המצב מסונכרן בכל פעם שמופעלת הפונקציה apply. במקרה כזה, הביצועים יהיו גרועים בהרבה.