在 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、IP 地址或用户名。
  • timeUnit(字符串,必需):配额分桶在重置之前会累积多长时间。有效值包括“分钟”“小时”“天”“周”和“月”。
  • allow(数字,必需):配额分桶的最大值。此值将与当前值组合,以返回配额是否已成功。
  • interval(数字,可选):与“timeUnit”结合使用,用于确定在配额重置之前需要等待多长时间。默认值为 1。设置为较大的值,以允许“两小时”“三周”等配额。
  • weight(数值,可选):用于递增配额的值。默认值为 1。

(2) 第二个参数是具有以下两个参数的回调函数:

  • 如果无法递增配额,第一个参数为 Error 对象;如果操作成功,则为未定义。
  • 第二个是包含以下字段的对象:
    • used(数字):配额分桶的当前值。
    • allowed(数字):当配额被视为超出配额之前,配额桶的最大值。相同的值作为“allow”在请求对象中传递。
    • isAllowed(布尔值):配额中是否还有剩余空间 - 只要“已用”小于或等于“允许”,则为 true。
    • expiryTime(长):重置配额存储分区时的时间戳,以自 1970 年格式以来的毫秒数表示。
    • timestamp(长):配额更新的时间戳。

示例

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、IP 地址或用户名。
    • timeUnit(字符串,必填):配额分桶累积到多少时间后会重置。有效值包括“分钟”“小时”“天”“周”和“月”。
    • interval(数字,可选):与“timeUnit”结合使用,以确定重置配额前多长时间。默认值为 1。设置为较大的值可允许重置时间,如“两小时”“三周”等。
  • 回调函数
    • 如果重置失败,回调将 Error 对象作为第一个参数。

高级配额用例

创建配额时,您可以添加可选的“options”对象。此对象有一个可选参数:
  • syncInterval(数字,可选):分布式配额实现在网络上同步其状态所需的秒数。默认值为 10。
您可以使用此参数优化在整个广告网络中分配配额的效果。请注意,设置越低,性能会越差,并且“应用”操作的延迟时间会大幅增加。默认设置为 10 秒,对于许多应用来说,这个设置非常合适。 间隔时间可以设置为最短的 0,这意味着每次调用“apply”时都会同步状态。在这种情况下,效果会更差。