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

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

เกริ่นนำ

หัวข้อนี้จะอธิบายวิธีใช้ 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 (สตริง, ต้องระบุ): ระยะเวลาในการสะสมที่เก็บข้อมูลโควต้าจนกว่าจะรีเซ็ต ค่าที่ถูกต้องคือ "นาที" "ชั่วโมง" "วัน" "สัปดาห์" และ "เดือน"
  • allow (ตัวเลข, ต้องระบุ): ค่าสูงสุดสำหรับที่เก็บข้อมูลโควต้า ระบบจะรวมค่านี้กับค่าปัจจุบันเพื่อแสดงว่าโควต้าทำงานสำเร็จหรือไม่
  • interval (ตัวเลข, ไม่บังคับ): รวมกับ "timeUnit" เพื่อกำหนดระยะเวลาก่อนที่จะมีการรีเซ็ตโควต้า ค่าเริ่มต้นคือ 1 ตั้งค่าเป็นค่าที่ใหญ่ขึ้นเพื่ออนุญาตให้ใช้โควต้า เช่น "2 ชั่วโมง" "3 สัปดาห์" และอื่นๆ
  • weight (ตัวเลข, ไม่บังคับ): ค่าที่จะเพิ่มโควต้า ค่าเริ่มต้นคือ 1

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

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

รีเซ็ต

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

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

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