การเข้าถึงบริการโควต้าใน 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'); }
                }       

พารามิเตอร์

เมธอด use() ใช้พารามิเตอร์สองตัว คือ ออบเจ็กต์และฟังก์ชัน:

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

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

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

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

รีเซ็ต

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

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

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