รวมรหัส ERROR ที่พบบ่อย ใช้งาน API แล้วเจอแต่ละรหัสหมายถึงอะไร?
เวลาระบบเว็บไซต์ แอปพลิเคชัน หรือระบบหลังบ้านเชื่อมต่อกับ API อาจพบข้อความ ERROR หรือรหัสสถานะต่าง ๆ เช่น 400, 401, 404, 429, 500 หรือ 503
รหัสเหล่านี้ช่วยบอกว่าเกิดปัญหาที่ส่วนไหน ทำให้นักพัฒนาสามารถตรวจสอบและแก้ไขปัญหาได้รวดเร็วขึ้น โดยเฉพาะระบบที่เกี่ยวข้องกับการตรวจสอบสลิป การชำระเงิน หรือการทำรายการแบบอัตโนมัติ
ERROR Code คืออะไร?
ERROR Code คือรหัสที่ระบบส่งกลับมาเพื่อบอกผลของคำขอที่ส่งไปยัง API
ตัวอย่างเช่น ระบบส่งสลิปไปตรวจสอบ แต่ข้อมูลที่ส่งไปไม่ครบ API อาจตอบกลับเป็น 400 Bad Request
หรือหาก API Key ไม่ถูกต้อง ระบบอาจตอบกลับเป็น 401 Unauthorized
ดังนั้นเมื่อพบ Error สิ่งแรกที่ควรทำคือ ตรวจสอบรหัส Error และข้อความที่ API ส่งกลับมา ก่อนแก้ไขระบบ
400 Bad Request
หมายถึงข้อมูลที่ส่งไปยัง API ไม่ถูกต้อง หรือมีข้อมูลบางส่วนไม่ครบ
สาเหตุที่พบได้ เช่น
ส่ง Parameter ไม่ครบ รูปแบบ JSON ไม่ถูกต้อง ส่งไฟล์ผิดประเภท ชื่อ Field ไม่ตรงกับที่ API กำหนด ข้อมูลบางรายการเป็นค่าว่าง วิธีแก้
ตรวจสอบ Request ที่ส่งไปยัง API และเปรียบเทียบกับ Documentation อีกครั้ง โดยเฉพาะชื่อ Field และข้อมูลที่จำเป็นต้องส่ง
401 Unauthorized
หมายถึงระบบไม่สามารถยืนยันสิทธิ์ในการเรียกใช้ API ได้
สาเหตุที่พบบ่อย ได้แก่
API Key ไม่ถูกต้อง Token หมดอายุ ไม่ได้ส่ง Authorization Header ใช้ Credentials ของบัญชีอื่น วิธีแก้
ตรวจสอบ API Key หรือ Token ที่ใช้งาน และควรเก็บข้อมูลสำคัญเหล่านี้ไว้ฝั่ง Server ไม่ควรเปิดเผยไว้ใน Source Code ฝั่งหน้าเว็บ
403 Forbidden
หมายถึงระบบได้รับคำขอแล้ว แต่บัญชีหรือ API Key ไม่มีสิทธิ์ใช้งานฟังก์ชันดังกล่าว
ตัวอย่างเช่น แพ็กเกจที่ใช้อยู่ไม่รองรับ Endpoint นั้น หรือมีการจำกัดสิทธิ์ของบัญชี
วิธีแก้
ตรวจสอบสิทธิ์ของบัญชี แพ็กเกจ และการตั้งค่า API
404 Not Found
หมายถึงระบบไม่พบ Endpoint หรือ Resource ที่เรียกใช้งาน
สาเหตุอาจเกิดจาก
URL API ผิด Endpoint ถูกเปลี่ยน ใช้ API Version เก่า Resource ที่ต้องการค้นหาไม่มีอยู่แล้ว วิธีแก้
ตรวจสอบ URL และ API Documentation เวอร์ชันล่าสุด
408 Request Timeout
หมายถึง API ใช้เวลาประมวลผลนานเกินกว่าที่ระบบกำหนด
อาจเกิดจากอินเทอร์เน็ตช้า เซิร์ฟเวอร์ทำงานหนัก หรือบริการภายนอกตอบสนองช้า
วิธีแก้
ระบบควรมี Timeout ที่เหมาะสม และสามารถ Retry รายการใหม่ได้โดยไม่ทำให้เกิดรายการซ้ำ
409 Conflict
รหัสนี้มักหมายถึงข้อมูลที่กำลังส่งไปมีความขัดแย้งกับข้อมูลในระบบอยู่แล้ว
ตัวอย่างเช่น ระบบอาจพบ Reference หรือรายการเดิมที่ถูกสร้างไปแล้ว
สำหรับระบบธุรกรรม ควรตรวจสอบให้ละเอียดก่อนส่ง Request ซ้ำ
422 Unprocessable Entity
หมายถึง API รับรูปแบบ Request ได้ แต่ข้อมูลภายในไม่สามารถนำไปประมวลผลได้
ตัวอย่างเช่น
จำนวนเงินไม่ถูกต้อง รูปภาพไม่สามารถอ่านได้ รูปแบบข้อมูลบางส่วนไม่ผ่านเงื่อนไข ข้อมูลไม่ตรงกับรูปแบบที่ระบบกำหนด วิธีแก้
ตรวจสอบรายละเอียด Error Message ที่ API ส่งกลับมา เพราะมักระบุว่าข้อมูลส่วนใดมีปัญหา
429 Too Many Requests
หมายถึงมีการเรียก API มากเกินจำนวนที่ระบบอนุญาตในช่วงเวลาหนึ่ง หรือที่เรียกว่า Rate Limit
ตัวอย่างเช่น ระบบยิง API ซ้ำหลายครั้งในระยะเวลาสั้น ๆ
วิธีแก้
ควรตั้งระบบ Queue หรือหน่วงเวลาระหว่าง Request และใช้ Retry แบบมีระยะเวลารอแทนการยิงซ้ำทันที
กลุ่ม Server Error
หากเจอ Error ที่ขึ้นต้นด้วยเลข 5xx โดยทั่วไปจะเกี่ยวข้องกับ Server หรือบริการที่ระบบกำลังเชื่อมต่อ
500 Internal Server Error
หมายถึงเกิดข้อผิดพลาดภายใน Server
อาจเกิดจาก Code ฝั่ง Server ทำงานผิดพลาด ฐานข้อมูลมีปัญหา หรือเกิด Exception ระหว่างประมวลผล
หากพบเพียงครั้งเดียวสามารถลองใหม่ได้ แต่หากเกิดอย่างต่อเนื่องควรตรวจสอบ Log ของระบบ
502 Bad Gateway
หมายถึง Server ตัวกลางได้รับคำตอบที่ไม่ถูกต้องจาก Server อีกตัวหนึ่ง
มักพบในระบบที่มีหลาย Service เชื่อมต่อกัน เช่น
เว็บไซต์ → API → ผู้ให้บริการภายนอก
หากผู้ให้บริการปลายทางมีปัญหา Server ตัวกลางอาจตอบกลับเป็น 502
503 Service Unavailable
หมายถึงระบบไม่พร้อมให้บริการชั่วคราว
อาจเกิดจาก
Server มีผู้ใช้งานจำนวนมาก ระบบกำลัง Maintenance Service บางส่วนหยุดทำงาน Server Load สูง
ในกรณีนี้ควร Retry ภายหลัง ไม่ควรส่ง Request ซ้ำอย่างต่อเนื่อง
504 Gateway Timeout
หมายถึง Server ตัวกลางรอคำตอบจากระบบปลายทางนานเกินไป
ตัวอย่างเช่น ระบบส่งข้อมูลไปตรวจสอบกับผู้ให้บริการ แต่ผู้ให้บริการไม่ตอบกลับภายในเวลาที่กำหนด
สำหรับระบบเช็คสลิปหรือระบบการเงิน ควรตั้งสถานะรายการเป็น “รอตรวจสอบ” ก่อน ไม่ควรสรุปทันทีว่ารายการล้มเหลว
Error ที่ระบบเช็คสลิปอาจพบ
นอกจาก HTTP Status Code แล้ว ระบบเช็คสลิปอาจมี Error Code ภายในของตัวเอง เช่น
ไม่พบ QR / ไม่สามารถอ่านข้อมูลสลิป / รายการซ้ำ / จำนวนเงินไม่ตรง / ไม่รองรับธนาคาร / ไม่พบธุรกรรม / ระบบตรวจสอบขัดข้อง
รหัสประเภทนี้จะแตกต่างกันตามผู้ให้บริการ ดังนั้นควรตรวจสอบจาก Documentation ของ API ที่ใช้งานจริง
ไม่ควรนำ Error Code ของผู้ให้บริการหนึ่งไปใช้ตีความกับอีกผู้ให้บริการโดยตรง เพราะชื่อและความหมายของรหัสอาจไม่เหมือนกัน
อย่าแสดง Error ดิบให้ลูกค้าเห็น
ระบบที่ดีควรแยกข้อความ Error สำหรับ Developer กับข้อความที่แสดงให้ลูกค้า
ตัวอย่างเช่น Server อาจได้รับ
504 Gateway Timeout
แต่หน้าลูกค้าควรแสดงเป็น
“ระบบตรวจสอบรายการใช้เวลานานกว่าปกติ กรุณารอสักครู่และลองใหม่อีกครั้ง”
ทำให้ผู้ใช้งานเข้าใจง่ายกว่า และไม่เปิดเผยข้อมูลทางเทคนิคที่ไม่จำเป็น
ควรเก็บ Error Log ไว้ตรวจสอบ
ทุกครั้งที่ API เกิด Error ควรบันทึกข้อมูลสำคัญ เช่น
เวลาเกิดเหตุ, Endpoint, HTTP Status, Error Message, Request ID และ Reference ของรายการ
ข้อมูลเหล่านี้จะช่วยให้ทีมพัฒนาหาสาเหตุได้เร็วขึ้น และสามารถตรวจสอบย้อนหลังได้เมื่อเกิดปัญหากับรายการของลูกค้า
สรุป
รหัส ERROR เป็นเครื่องมือสำคัญที่ช่วยบอกว่า API กำลังมีปัญหาที่จุดใด โดยสามารถแบ่งคร่าว ๆ ได้เป็น
4xx = ปัญหาจาก Request, ข้อมูล หรือสิทธิ์การใช้งาน 5xx = ปัญหาจาก Server หรือระบบที่เชื่อมต่อ
สำหรับระบบเช็คสลิปและระบบธุรกรรม สิ่งสำคัญคือไม่ควร Retry แบบไม่จำกัด และไม่ควรสรุปว่ารายการล้มเหลวทันทีเมื่อ API มีปัญหา
ควรมีระบบ Error Handling, Retry, Logging และสถานะ “รอตรวจสอบ” เพื่อให้ระบบทำงานได้อย่างปลอดภัยและลดปัญหารายการซ้ำหรือข้อมูลผิดพลาดครับ


