APIs (Application Programming Interfaces) คือผู้ส่งสารที่เชื่อมโยงแอปพลิเคชันซอฟต์แวร์เข้าด้วยกัน ซึ่งช่วยให้สองเอนทิตีแยกกันแลกเปลี่ยนข้อมูลหรือฟังก์ชันการทำงานได้ อย่างไรก็ตาม เมื่อแอปพลิเคชันได้รับความนิยม APIs และเซิร์ฟเวอร์จะต้องทำงานหนักขึ้นมากเพื่อให้สามารถให้บริการแก่ผู้ใช้ได้มากขึ้น
เพื่อให้แน่ใจว่าสิ่งนี้จะไม่เกิดขึ้น ให้พิจารณาใช้เครื่องมือ API เช่น Apidog ด้วย Apidog คุณสามารถสร้าง ทดสอบ จำลอง และจัดทำเอกสาร APIs ได้ทั้งหมดภายในแอปเดียว หากคุณสนใจ เริ่มต้นวันนี้โดยคลิกที่ปุ่มด้านล่าง! 👇 👇 👇
API throttling และ API rate limiting เป็นสองคำที่มักจะถูกนำมาใช้ปะปนกัน อย่างไรก็ตาม ทั้งสองคำไม่ได้มีความหมายเดียวกัน หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับความแตกต่างระหว่าง throttling และ rate limiting โปรดดูบทความนี้ก่อน!

API Throttling คืออะไร?
API throttling คือกลไกที่ใช้ควบคุมอัตราที่แอปพลิเคชันสามารถเข้าถึง API ได้ กล่าวอีกนัยหนึ่ง API throttling จะจำกัดจำนวนคำขอที่สามารถส่งไปยัง API ได้ภายในระยะเวลาที่กำหนด
API throttling ใช้เพื่อป้องกันไม่ให้ API โอเวอร์โหลด เพื่อให้มั่นใจว่าทุกคนจะได้รับประสิทธิภาพที่ราบรื่นเมื่อใช้ API
API Throttling ทำงานอย่างไร?
ในการใช้งาน API throttling แอปพลิเคชันจะพึ่งพาอัลกอริทึมในการจัดการการไหลของคำขอที่เข้ามา
อัลกอริทึม Token Bucket
อัลกอริทึม Token Bucket หมุนรอบสองแนวคิด:
- โทเค็น: โทเค็นคือ "การอนุญาต" ในการเข้าถึง API
- บัคเก็ต: บัคเก็ตเก็บโทเค็นจำนวนจำกัด
ในอัลกอริทึม Token Bucket มีแนวคิดบางอย่างที่คุณต้องทำความคุ้นเคย:
- Request Allowance: หรือที่เรียกว่า rate limiting API กำหนดขีดจำกัดอัตราที่กำหนดจำนวนโทเค็นที่จะเพิ่มลงในบัคเก็ตต่อหน่วยเวลา (ตัวอย่างเช่น: 10 โทเค็นต่อวินาที)
- Request Processing: เมื่อได้รับคำขอ API จะตรวจสอบบัคเก็ตเพื่อหาโทเค็นที่เหลืออยู่ หากมีโทเค็นพร้อมใช้งาน โทเค็นจำนวน
nจะถูกลบออก และคำขอจะถูกประมวลผล - Empty Bucket, Slow Down: หากพบว่าบัคเก็ตว่างเปล่าระหว่างการประมวลผลคำขอ คำขอจะถูก throttled ซึ่งหมายความว่าแอปพลิเคชันจะต้องรอจนกว่าจะมีการเพิ่มโทเค็นเพียงพอ (ตามขีดจำกัดอัตรา) ก่อนที่จะลองส่งคำขออีกครั้ง
Burst Capacity
Token Bucket Model สามารถขยายได้ด้วย burst capacity; burst capacity อนุญาตให้บัคเก็ตเก็บโทเค็นเพิ่มเติม (คิดว่าเป็นบัคเก็ตที่ใหญ่ขึ้นเล็กน้อยซึ่งมีโทเค็นเติมไว้ล่วงหน้า)
เมื่อเพิ่ม burst capacity แล้ว แอปพลิเคชันสามารถส่งคำขอจำนวนมากที่เกินขีดจำกัดอัตราในช่วงเวลาสั้นๆ ก่อนที่จะถูก throttled โดยปกติแล้วจะถูกนำไปใช้เพื่อจัดการกับปริมาณการใช้งานที่เพิ่มขึ้นอย่างมาก
การใช้งาน API Throttling
มีหลายระดับที่สามารถใช้งาน API throttling ได้:
- IP Address Based: จำกัดคำขอที่มาจากที่อยู่ IP เฉพาะ
- API Key Based: ใช้ API key ที่ไม่ซ้ำกันเพื่อระบุและ throttled แอปพลิเคชันแต่ละรายการ
- User-Based: Throttling ตามบัญชีผู้ใช้เพื่อการควบคุมที่ดีขึ้น
รหัสข้อผิดพลาดและการลองใหม่
เมื่อคำขอ API ถูก throttled API มักจะส่งคืน รหัสการตอบสนอง (ตัวอย่าง: 429 Too Many Requests) แอปพลิเคชันที่ได้รับการพัฒนาอย่างดีมีการใช้ตรรกะการลองใหม่พร้อมกลไก backoff ซึ่งบังคับให้ผู้ใช้รอเป็นเวลานานขึ้นเรื่อยๆ ก่อนที่จะถูก throttled
ข้อดีของ API Throttling
API throttling มีข้อดีหลายประการที่สำคัญซึ่งช่วยให้มั่นใจได้ถึงการทำงานที่ราบรื่นและเสถียรของ API สำหรับทั้งผู้ให้บริการและผู้ใช้ นี่คือรายละเอียดของประโยชน์หลัก:
1. ประสิทธิภาพและความเสถียร:
- ป้องกันการโอเวอร์โหลด: ปริมาณคำขอที่ไม่สามารถควบคุมได้อาจทำให้เซิร์ฟเวอร์ API ล้นหลาม ซึ่งนำไปสู่เวลาตอบสนองที่ช้าหรือแม้แต่การหยุดทำงาน API throttling ทำหน้าที่เป็นมาตรการป้องกัน ป้องกันไม่ให้คำขอมากเกินไปทำให้ระบบขัดข้อง ผู้ใช้จะได้รับประสิทธิภาพที่สอดคล้องกันเนื่องจาก API สามารถจัดการคำขอได้อย่างมีประสิทธิภาพ
2. ความยุติธรรมและการจัดการทรัพยากร:
- การเข้าถึงที่เท่าเทียมกัน: API throttling ช่วยให้มั่นใจได้ว่าไม่มีแอปพลิเคชันหรือผู้ใช้รายใดรายหนึ่งผูกขาดทรัพยากร API ทั้งหมด ด้วยการจำกัดอัตราคำขอ จะช่วยกระจายการเข้าถึงอย่างยุติธรรมในหมู่ผู้ใช้ทั้งหมด ป้องกันไม่ให้ผู้ใช้บางรายทำให้ประสบการณ์ของผู้ใช้อื่นๆ ลดลง
3. ความสามารถในการปรับขนาดและประสิทธิภาพ:
- โหลดที่คาดการณ์ได้: API throttling ช่วยให้ API จัดการเวิร์กโหลดที่คาดการณ์ได้ ด้วยการควบคุมการไหลของคำขอ ผู้ให้บริการ API สามารถปรับทรัพยากรและโครงสร้างพื้นฐานให้เหมาะสมกับรูปแบบการรับส่งข้อมูลที่คาดไว้ ซึ่งช่วยให้การปรับขนาดราบรื่นขึ้นเมื่อความต้องการเพิ่มขึ้น
4. ความปลอดภัย:
- การลดทอน DoS: การโจมตีแบบปฏิเสธการให้บริการ (DoS) มีเป้าหมายที่จะทำให้ระบบมีคำขอมากเกินไป ทำให้ไม่สามารถใช้งานได้สำหรับผู้ใช้ที่ถูกต้องตามกฎหมาย Throttling สามารถลดการโจมตีดังกล่าวได้โดยการระบุและ throttled อัตราคำขอที่สูงผิดปกติจากแหล่งเดียว
5. ปรับปรุงประสบการณ์ผู้ใช้:
- เวลาตอบสนองที่สอดคล้องกัน: ด้วยการป้องกันการโอเวอร์โหลด Throttling ช่วยให้มั่นใจได้ว่าผู้ใช้จะได้รับเวลาตอบสนองที่สอดคล้องกันสำหรับคำขอ API ของพวกเขา ซึ่งแปลเป็นประสบการณ์ที่รวดเร็วและน่าเชื่อถือยิ่งขึ้นสำหรับผู้ใช้ทั้งหมดที่พึ่งพา API
6. การตรวจสอบสุขภาพของแอปพลิเคชัน:
- การระบุรูปแบบการใช้งาน: ข้อมูล Throttling สามารถนำมาวิเคราะห์เพื่อทำความเข้าใจรูปแบบการใช้งานและระบุปัญหาที่อาจเกิดขึ้น ตัวอย่างเช่น อัตราการ Throttling ที่สูงสำหรับแอปพลิเคชันเฉพาะอาจบ่งบอกถึงโอกาสในการเพิ่มประสิทธิภาพสำหรับแอปพลิเคชันเหล่านั้น
7. ส่งเสริมการใช้งานอย่างมีความรับผิดชอบ:
- ส่งเสริมประสิทธิภาพ: Throttling จูงใจให้นักพัฒนาออกแบบแอปพลิเคชันที่ใช้ API อย่างมีประสิทธิภาพ ด้วยการจำกัดคำขอ นักพัฒนาจึงได้รับการสนับสนุนให้ปรับโค้ดให้เหมาะสมและหลีกเลี่ยงการเรียกที่ไม่จำเป็น
ตัวอย่างการเขียนโค้ดฝั่งเซิร์ฟเวอร์ API Throttling
ตัวอย่างโค้ด Python ด้านล่างแสดงให้เห็น API throttling โดยใช้วิธี Token Bucket
class TokenBucket:
def __init__(self, capacity, refill_rate):
self.capacity = capacity # จำนวนโทเค็นสูงสุด
self.tokens = capacity # จำนวนโทเค็นปัจจุบัน
self.refill_rate = refill_rate # โทเค็นที่เพิ่มต่อหน่วยเวลา
def get_token(self, current_time):
# จำลองการเติมโทเค็นตามเวลาที่ผ่านไป
elapsed_time = current_time - self.last_refill_time
self.tokens = min(self.capacity, self.tokens + (elapsed_time * self.refill_rate))
self.last_refill_time = current_time
if self.tokens > 0:
self.tokens -= 1
return True
else:
return False
# ตัวอย่างการใช้งาน
bucket = TokenBucket(5, 1) # 5 โทเค็น เติม 1 ต่อวินาที
request_time = time.time() # รับเวลาปัจจุบัน
if bucket.get_token(request_time):
# ประมวลผลคำขอ (ละเว้นตรรกะเพื่อความกระชับ)
print("อนุญาตคำขอ!")
else:
print("คำขอถูก throttled ลองใหม่อีกครั้งในภายหลัง!")
คำอธิบายโค้ด:
- คลาส
TokenBucketแสดงถึงบัคเก็ตที่มีcapacityและrefill_rate - เมธอด
get_tokenจะตรวจสอบเวลาปัจจุบันและจำลองการเติมบัคเก็ตตามเวลาที่ผ่านไปและอัตราการเติม - หากมีโทเค็นพร้อมใช้งาน (
tokensมากกว่า 0) จะลบโทเค็นและอนุญาตคำขอ - หากบัคเก็ตว่างเปล่า คำขอจะถูก throttled (ปฏิเสธ)
Apidog - ส่งคำขอไปยัง APIs ได้ไม่จำกัด
เมื่อคุณกำลังทดสอบ APIs เพื่อสังเกตการตอบสนองและประสิทธิภาพ คุณอาจต้องส่งคำขออย่างไม่รู้จบ เครื่องมือ API ส่วนใหญ่จำกัดให้ผู้ใช้ส่งคำขอได้จำนวนหนึ่งต่อวัน อย่างไรก็ตาม ด้วย Apidog คุณสามารถส่งคำขอไปยัง API ได้ต่อไปตราบใดที่ API ยังไม่ถึงขีดจำกัดอัตรา

ด้วย Apidog ซึ่งเป็นเครื่องมือพัฒนา API แบบ all-in-one คุณสามารถสร้าง จำลอง ทดสอบ และจัดทำเอกสาร APIs ได้ Apidog อำนวยความสะดวกในกระบวนการที่สำคัญทั้งหมดของวงจรชีวิต API โดยไม่ต้องติดตั้งหรือดาวน์โหลดเครื่องมือ API เพิ่มเติม
การสร้าง APIs ด้วย Apidog
ด้วย Apidog คุณสามารถสร้าง APIs ได้ด้วยตัวคุณเอง ไม่ว่าจะเป็นเฉพาะกลุ่มหรือใช้กันอย่างแพร่หลายในหลายสถานการณ์ ขึ้นอยู่กับคุณทั้งหมดที่จะตัดสินใจว่า API ของคุณสามารถทำอะไรได้บ้าง

เริ่มต้นด้วยการกดปุ่ม New API ดังที่แสดงในภาพด้านบน

ถัดไป คุณสามารถเลือกคุณลักษณะต่างๆ ของ API ได้ ในหน้านี้ คุณสามารถ:
- ตั้งค่าเมธอด HTTP (GET, POST, PUT หรือ DELETE)
- ตั้งค่า URL API (หรือ API endpoint) สำหรับการโต้ตอบระหว่างไคลเอนต์กับเซิร์ฟเวอร์
- รวมพารามิเตอร์หนึ่ง/หลายรายการที่จะส่งใน URL API
- ให้คำอธิบายเกี่ยวกับฟังก์ชันการทำงานที่ API มีจุดมุ่งหมายที่จะมอบให้ ที่นี่ คุณยังสามารถอธิบายขีดจำกัดอัตราที่คุณวางแผนจะนำไปใช้กับ API ของคุณได้
ยิ่งคุณสามารถให้รายละเอียดได้มากเท่าใดในขั้นตอนการออกแบบ เอกสารประกอบ API ของคุณก็จะยิ่งอธิบายได้มากขึ้น ดังที่แสดงในส่วนถัดไปของบทความนี้
เพื่อให้ความช่วยเหลือในการสร้าง APIs ในกรณีที่คุณเพิ่งเคยสร้าง API เป็นครั้งแรก คุณอาจพิจารณาอ่านบทความเหล่านี้



เมื่อคุณได้สรุปความจำเป็นพื้นฐานทั้งหมดในการส่งคำขอแล้ว คุณสามารถลองส่งคำขอได้โดยคลิก Send จากนั้นคุณควรได้รับการตอบสนองในส่วนล่างของหน้าต่าง Apidog ดังที่แสดงในภาพด้านบน
ส่วนติดต่อผู้ใช้ที่เรียบง่ายและใช้งานง่ายช่วยให้ผู้ใช้สามารถดูการตอบสนองที่ได้รับจากคำขอได้อย่างง่ายดาย นอกจากนี้ สิ่งสำคัญคือต้องทำความเข้าใจโครงสร้างของการตอบสนอง เนื่องจากคุณต้องจับคู่โค้ดทั้งฝั่งไคลเอนต์และเซิร์ฟเวอร์
สร้างเอกสารประกอบ API ที่อธิบายด้วย Apidog
ด้วย Apidog คุณสามารถสร้างเอกสารประกอบ API ได้อย่างรวดเร็ว ซึ่งรวมถึงทุกสิ่งที่นักพัฒนาซอฟต์แวร์ต้องการภายในไม่กี่คลิก

ลูกศร 1 - ขั้นแรก กดปุ่ม Share ที่ด้านซ้ายของหน้าต่างแอป Apidog จากนั้นคุณควรจะเห็นหน้า "Shared Docs" ซึ่งควรว่างเปล่า
ลูกศร 2 - กดปุ่ม + New ใต้ No Data เพื่อเริ่มสร้างเอกสารประกอบ API Apidog ฉบับแรกของคุณ
เลือกและรวมคุณสมบัติเอกสารประกอบ API ที่สำคัญ

Apidog มอบตัวเลือกให้นักพัฒนาในการเลือกคุณลักษณะของเอกสารประกอบ API เช่น ผู้ที่สามารถดูเอกสารประกอบ API ของคุณและการตั้งค่ารหัสผ่านไฟล์ เพื่อให้มีเพียงบุคคลหรือองค์กรที่เลือกเท่านั้นที่สามารถดูได้
ดูหรือแชร์เอกสารประกอบ API ของคุณ

Apidog รวบรวมรายละเอียดของโปรเจกต์ API ของคุณลงในเอกสารประกอบ API ที่สามารถดูได้ผ่าน URL เว็บไซต์ สิ่งที่คุณต้องทำคือแจกจ่าย URL เพื่อให้ผู้อื่นสามารถดูเอกสารประกอบ API ของคุณได้!
หากต้องการรายละเอียดเพิ่มเติม โปรดอ่านบทความนี้เกี่ยวกับวิธีสร้างเอกสารประกอบ API โดยใช้ Apidog:

บทสรุป
API throttling มีบทบาทสำคัญในการรักษาระบบนิเวศ API ที่ดีต่อสุขภาพและใช้งานได้จริง ด้วยการควบคุมการไหลของคำขอที่เข้ามา จะช่วยปกป้อง API จากการโอเวอร์โหลด ทำให้มั่นใจได้ถึงประสิทธิภาพที่ราบรื่นและเวลาตอบสนองที่สอดคล้องกันสำหรับผู้ใช้ทั้งหมด ความยุติธรรมนี้ขยายไปถึงการจัดการทรัพยากร ป้องกันไม่ให้แอปพลิเคชันเดียวผูกขาดทรัพยากรและทำให้ประสบการณ์ของผู้ใช้อื่นๆ ลดลง
นอกจากนี้ Throttling ยังเสริมสร้างความปลอดภัยด้วยการลดการโจมตีแบบปฏิเสธการให้บริการที่มีเป้าหมายที่จะทำให้ระบบล้นหลาม โดยพื้นฐานแล้ว API throttling สร้างสถานการณ์แบบ win-win สำหรับทั้งผู้ให้บริการ API และผู้ใช้ ส่งเสริมสภาพแวดล้อมที่เชื่อถือได้และมีประสิทธิภาพสำหรับการพัฒนาแอปพลิเคชันและการแลกเปลี่ยนข้อมูล
Apidog สามารถเป็นเครื่องมือ API ที่เหมาะสมที่สุดเพื่อให้แน่ใจว่า APIs ของคุณทำงานได้อย่างราบรื่น ร่วมกับคุณสมบัติเอกสารประกอบของ Apidog คุณสามารถอธิบายได้อย่างชัดเจนว่าขีดจำกัดอัตราสำหรับ API ของคุณคืออะไร ซึ่งจะช่วยป้องกันไม่ให้ผู้ใช้ละเมิด API ของคุณ



