在 Node.js 中存取配額服務

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

簡介

本主題說明如何使用 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);
    });

方法


適用

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

用量

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 物件:

  • ID (字串,必填):配額值區的專屬 ID。實際上可能是應用程式 ID、IP 位址或使用者名稱。
  • timeUnit (字串,必填):配額儲存區累積配額的時間長度,之後配額就會重設。有效值為「minute」、「hour」、「day」、「week」和「month」。
  • allow (數字,必要):配額儲存區的最大值。這個值會與目前的值合併,以傳回配額是否成功。
  • 間隔 (數字,選用):與「timeUnit」合併使用,判斷配額重設前經過的時間長度。預設值為 1。設為較大的值,即可允許「兩小時」、「三週」等配額。
  • weight (數字,選用):配額的遞增值。預設值為 1。

(2) 第二個引數是回呼函式,包含下列兩個引數:

  • 如果配額無法遞增,第一個引數是 Error 物件;如果作業成功,則為 undefined。
  • 第二個是包含下列欄位的物件:
    • used (數字):配額值區的目前值。
    • allowed (數字):配額視為超出前,配額值區的最大值。要求物件中傳遞的「allow」值相同。
    • isAllowed (布林值):配額是否還有空間,只要「已用」小於或等於「允許」,即為 true。
    • 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」。
    • 間隔 (數字,選用):與「timeUnit」搭配使用,可決定配額重設前經過的時間長度。預設值為 1。設為較大的值,即可允許重設時間,例如「兩小時」、「三週」等。
  • 回呼函式:
    • 如果重設失敗,回呼會將 Error 物件做為第一個參數。

進階配額用途

建立配額時,您可以加入選用的「options」物件。這個物件有一個選用參數:
  • syncInterval (數字,選用):分散式配額實作在網路上同步處理狀態的秒數。預設值為 10。
使用這個參數,盡可能提升整個網路的配額分配成效。請注意,設定值越低,效能就會越差,且「套用」作業的延遲時間會大幅增加。預設的 10 秒設定適用於許多應用程式。 間隔可設為零,也就是每次呼叫「套用」時,狀態都會同步。在這種情況下,效能會大幅降低。