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

方法


套用

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

使用方法

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 (字串,必要):配額值區在重設前的累計時間長度。有效值為「分鐘」、「小時」、「天」、「週」和「月」。
  • allow (數字,必要):配額值區的最大值。這個值會與目前值結合,以傳回配額是否成功。
  • interval (數字,選用):結合「timeUnit」,決定配額重設前的時間長度。預設值為 1。請調高數值,以便允許「兩小時」、「三週」等配額。
  • weight (數字,選用):要增加配額的值。預設值為 1。

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

  • 如果無法提高配額,第一個引數是 Error 物件,如果作業成功,則會未定義。
  • 第二個是包含下列欄位的物件:
    • used (數字):配額值區目前的值。
    • allowed (數字):超過配額之前的配額值區最大值。相同的值是在要求物件中以「allow」傳遞。
    • isAllowed (布林值):如果配額中還有空間,前提是「used」小於或等於「allowed」。
    • expiryTime (長):配額值區重設時的時間戳記,以 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'); }
}

重設

如要將配額重設為零,請呼叫配額.reset()。這個方法需要兩個參數:
  • 含有以下欄位的 JSON 物件:
    • identifier (字串,必要):配額值區的專屬 ID。實際上可能是應用程式 ID、IP 位址或使用者名稱。
    • timeUnit (字串,必要):配額值區在重設前的累積時間長度。有效值為「分鐘」、「小時」、「天」、「週」和「月」。
    • interval (數字,選用):結合「timeUnit」,決定配額重設前的時間長度。預設值為 1。請調高這個值以允許重設時間,例如「2 小時」、「三週」等。
  • 回呼函式:
    • 如果重設失敗,回呼會將 Error 物件做為第一個參數。

進階配額用途

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