นักพัฒนา

รวมรหัส ERROR ที่พบบ่อย ใช้งาน API แล้วเจอแต่ละรหัสหมายถึงอะไร?

รวมรหัส ERROR ที่พบบ่อย ใช้งาน API แล้วเจอแต่ละรหัสหมายถึงอะไร? เวลาระบบเว็บไซต์ แอปพลิเคชัน หรือระบบหลังบ้านเชื่อมต่อกับ API อาจพบข้อความ ERROR หรือรหัสสถานะต่าง ๆ เช่น 400, 401,…

รวมรหัส ERROR ที่พบบ่อย ใช้งาน API แล้วเจอแต่ละรหัสหมายถึงอะไร?

รวมรหัส 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 และสถานะ “รอตรวจสอบ” เพื่อให้ระบบทำงานได้อย่างปลอดภัยและลดปัญหารายการซ้ำหรือข้อมูลผิดพลาดครับ

บทความที่เกี่ยวข้อง