การเข้าถึงบริการโควต้าใน Node.js

คุณกำลังดูเอกสารประกอบสำหรับ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

บทนำ

หัวข้อนี้อธิบายวิธีใช้ 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);
    });

เมธอด


ใช้

แก้ไขการตั้งค่าในออบเจ็กต์โควต้า ใช้วิธีนี้เพื่อเพิ่มหรือลดโควต้า เปลี่ยนช่วงเวลา และทำการกําหนดค่าอื่นๆ

การใช้งาน

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() ใช้พารามิเตอร์ 2 รายการ ได้แก่ ออบเจ็กต์และฟังก์ชัน ดังนี้

(1) พารามิเตอร์แรกคือออบเจ็กต์ JSON ที่มีช่องต่อไปนี้

  • identifier (สตริง, ต้องระบุ): ตัวระบุที่ไม่ซ้ำกันของที่เก็บข้อมูลโควต้า ในทางปฏิบัติ อาจเป็นรหัสแอปพลิเคชัน ที่อยู่ IP หรือชื่อผู้ใช้
  • timeUnit (สตริง ต้องระบุ): ระยะเวลาที่ที่เก็บข้อมูลโควต้าจะสะสมจนกว่าจะรีเซ็ต ค่าที่ใช้ได้มีดังนี้ "minute" "hour" "day" "week" และ "month"
  • allow (ตัวเลข ต้องระบุ): ค่าสูงสุดสำหรับที่เก็บข้อมูลโควต้า ระบบจะรวมค่านี้เข้ากับค่าปัจจุบันเพื่อแสดงผลว่าโควต้าสำเร็จหรือไม่
  • interval (ตัวเลข ไม่บังคับ): รวมกับ "timeUnit" เพื่อกำหนดระยะเวลาก่อนที่ระบบจะรีเซ็ตโควต้า ค่าเริ่มต้นคือ 1 ตั้งค่าเป็นค่าที่มากกว่าเพื่ออนุญาตโควต้า เช่น "2 ชั่วโมง" "3 สัปดาห์" เป็นต้น
  • weight (ตัวเลข ไม่บังคับ): ค่าที่จะเพิ่มโควต้า ค่าเริ่มต้นคือ 1

(2) อาร์กิวเมนต์ที่ 2 คือฟังก์ชัน Callback ที่มีอาร์กิวเมนต์ 2 รายการต่อไปนี้

  • โดยอาร์กิวเมนต์แรกจะเป็นออบเจ็กต์ Error หากเพิ่มโควต้าไม่ได้ หรือไม่มีการกำหนดค่าหากการดำเนินการสำเร็จ
  • ส่วนรายการที่ 2 จะเป็นออบเจ็กต์ที่มีฟิลด์ต่อไปนี้
    • used (ตัวเลข): มูลค่าปัจจุบันของที่เก็บข้อมูลโควต้า
    • allowed (ตัวเลข): ค่าสูงสุดของที่เก็บข้อมูลโควต้าก่อนที่จะถือว่ามีการใช้โควต้าเกิน ระบบส่งค่าเดียวกันเป็น "allow" ในออบเจ็กต์คำขอ
    • isAllowed (บูลีน): หากยังมีโควต้าเหลืออยู่ ให้แสดงผลเป็น "จริง" ตราบใดที่ "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'); }
}

reset

หากต้องการรีเซ็ตโควต้าเป็น 0 ให้เรียกใช้ quot.reset() ซึ่งใช้พารามิเตอร์ 2 รายการ ได้แก่
  • ออบเจ็กต์ JSON ที่มีฟิลด์ต่อไปนี้
    • identifier (สตริง ต้องระบุ): ตัวระบุที่ไม่ซ้ำกันของที่เก็บข้อมูลโควต้า ในทางปฏิบัติ อาจเป็นรหัสแอปพลิเคชัน ที่อยู่ IP หรือชื่อผู้ใช้
    • timeUnit (สตริง, ต้องระบุ): ระยะเวลาที่ที่เก็บข้อมูลโควต้าจะรวบรวมไว้ จนกว่าจะมีการรีเซ็ต ค่าที่ใช้ได้มีดังนี้ "minute" "hour" "day" "week" และ "month"
    • interval (ตัวเลข ไม่บังคับ): ใช้ร่วมกับ "timeUnit" เพื่อกำหนดระยะเวลาก่อนที่ระบบจะรีเซ็ตโควต้า ค่าเริ่มต้นคือ 1 ตั้งค่าเป็นค่าที่มากกว่าเพื่ออนุญาตให้รีเซ็ตเวลา เช่น "2 ชั่วโมง" "3 สัปดาห์" เป็นต้น
  • ฟังก์ชัน Callback:
    • ฟังก์ชัน Callback จะใช้ออบเจ็กต์ Error เป็นพารามิเตอร์แรกหากรีเซ็ตไม่สำเร็จ

กรณีการใช้งานโควต้าขั้นสูง

เมื่อสร้างโควต้า คุณจะใส่ออบเจ็กต์ "ตัวเลือก" หรือไม่ก็ได้ ออบเจ็กต์นี้มีพารามิเตอร์ที่ไม่บังคับ 1 รายการ ดังนี้
  • syncInterval (ตัวเลข ไม่บังคับ): จํานวนวินาทีที่การติดตั้งใช้งานโควต้าแบบกระจายจะซิงค์สถานะในเครือข่าย ค่าเริ่มต้นคือ 10
ใช้พารามิเตอร์นี้เพื่อเพิ่มประสิทธิภาพของโควต้าที่กระจายทั่วทั้งเครือข่าย โปรดทราบว่าการตั้งค่าที่ต่ำกว่าจะทำให้ประสิทธิภาพการทำงานลดลง และทำให้เวลาในการตอบสนองของการดำเนินการ "นำไปใช้" เพิ่มขึ้นอย่างมาก การตั้งค่าเริ่มต้นที่ 10 วินาทีเป็นการตั้งค่าที่ดีสําหรับแอปพลิเคชันจํานวนมาก คุณอาจตั้งค่าช่วงเวลาเป็น 0 ซึ่งหมายความว่าระบบจะซิงค์สถานะทุกครั้งที่มีการเรียกใช้ "apply" ประสิทธิภาพจะแย่ลงมากในกรณีนี้