在 Node.js 中存取配額服務

您正在查看 Apigee Edge 說明文件。
參閱 Apigee X說明文件
資訊

簡介

本主題說明如何使用 apigee-access,從 Node.js 應用程式存取 Apigee Edge 配額服務。您可以使用 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);
    });

方法


apply

修改配額物件的設定。使用這個方法可增加或減少配額、變更時間間隔,以及進行其他設定。

用量

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 (字串,必要):配額值區的專屬 ID。實際上,這可能會是應用程式 ID、IP 位址或使用者名稱。
  • timeUnit (字串,必要):配額值區在重設之前的累計時間。有效值為「minute」、「hour」、「day」、「week」和「month」。
  • allow (數字,必要):配額區塊的最大值。系統會將這個值與目前的值結合,以便傳回配額是否成功。
  • interval (數字,選用):與「timeUnit」結合,用於決定重設配額的時間長度。預設值為 1。設定為較大的值,即可允許「兩小時」、「三週」等配額。
  • weight (數字,選填):用來增加配額的值。預設值為 1。

(2) 第二個引數是具有以下兩個引數的回呼函式:

  • 如果配額無法增加,第一個引數會是 Error 物件;如果作業成功,則為 undefined。
  • 第二個是包含下列欄位的物件:
    • used (數字):配額值區目前的值。
    • allowed (數字):超出配額上限的值區上限值。在要求物件中,同一個值會以「allow」的形式傳遞。
    • isAllowed (布林值):如果配額中還有空間,只要「已用」小於或等於「允許」,就會設為「是」。
    • 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 (字串,必要):配額區塊的專屬 ID。實際上,這可能會是應用程式 ID、IP 位址或使用者名稱。
    • timeUnit (字串,必要):配額值區在重設之後會累積多久。有效值為「minute」、「hour」、「day」、「week」和「month」。
    • interval (數字,選填):與「timeUnit」結合,用於決定重設配額的時間長度。預設值為 1。設定為較大的值,即可允許重設時間,例如「兩小時」、「三週」等。
  • 回呼函式:
    • 如果重設失敗,回呼會將 Error 物件做為第一個參數。

進階配額用途

建立配額時,您可以加入選用的「options」物件。這個物件有一個選用參數:
  • syncInterval (數字,選用):分散式配額實作項目在整個網路中同步處理其狀態的秒數。預設值為 10。
使用這個參數,可在聯播網中最佳化分配配額的成效。請注意,設定較低的設定會降低效能,並大幅增加「apply」作業的延遲時間。預設的 10 秒設定適用於許多應用程式。間隔可以設為零,這代表每次呼叫「apply」時,狀態都會保持同步。在這個情況下,效能會比較差。