ErrorMessage
เนื่องจากช่วงนี้ต้องไปร่วมพัฒนาระบบงานที่มี RESTful APIs ให้บริการ
พบว่าสิ่งหนึ่งสำหรับนักพัฒนาที่ดีจะต้องคำนึงถึงก็คือ
การจัดการกับ error หรือข้อผิดพลาดต่าง ๆ
ซึ่งถ้าจัดการได้ดี จะทำให้ API ที่สร้างนั้นมันดูดีมากขึ้น

เนื่องจากสิ่งที่สร้างนั้น เพื่อให้คนใช้งานนะ
ดังนั้นการออกแบบสำหรับการจัดการข้อมูลพลาดจึงสำคัญมาก ๆ
จึงทำการสรุปเรื่องที่ต้องใส่ใจไว้ดังนี้

ต้องเป็นไปตามกฎต่าง ๆ ของ HTTP
ดังนั้น error response ต่าง ๆ ก็ต้องทำตามด้วย
เพื่อทำให้ error ต่าง ๆ

  • มี Status code ที่ถูกต้อง
  • ต้องสนใจ Accept header เสมอ
  • ส่งข้อมูลกลับไปให้ถูกต้องตาม Content-Type

เริ่มจาก Status Code สำหรับ Error
มักจะสนใจอยู่สองกลุ่มคือ

  • 4xx เป็น error ฝั่ง client หรือผู้ใช้งาน
  • 5xx เป็น error ฝั่น server หรือผู้ให้บริการ

ตัวอย่างเช่น

  • 400 สำหรับการ validate ข้อมูล
  • 401 และ 403 จะเกี่ยวกับ permission การใช้งาน
  • 404 ไม่พบข้อมูล
  • 500 และ 503 จะเกี่ยวกับ server error

ต่อมาเรื่องของ Media Type
ซึ่งถูกส่งมาจากผู้ร้องขอ หรือ ผู้ใช้งาน
ว่าต้องการ หรือ ยอมรับข้อมูลรูปแบบไหน
เช่น XML และ JSON เป็นต้น
ดังนั้นทางฝั่งผู้ให้บริการควรสนใจ
และส่งผลของ error กลับไปในรูปแบบนั้น ๆ

ต่อมาเรื่องรูปแบบของ Error response ที่ส่งกลับไป
อย่างน้อยควรประกอบไปด้วย

  • Error code ของ application หรือของระบบที่กำหนดไว้
  • ข้อความที่คนสามารถอ่านรู้เรื่องและเข้าใจ

โดยทั้ง Error code และข้อความต่าง ๆ ควรมีอยู่ในเอกสารเพื่ออธิบายเสมอ

เพียงเท่านี้ Error response ของ API ก็จะดูดี
รวมทั้งผู้ใช้งานก็เข้าใจและใช้งานได้ง่าย
ไม่ต้องมานั่งแปลเป็นภาษาคนอีก !!

คำถามคือ วันนี้คุณออกแบบ Error response ของ API กันอย่างไร ?

Reference Websites
https://www.api2cart.com/blog/hints-tricks-better-api-error-codes/
http://www.daimto.com/google-api-error-list/
https://dzone.com/articles/api-errors-are-first-class-citizens
http://apiux.com/2013/03/28/2-steps-api-error-codes/

Tags:,