เนื่องจากช่วงนี้ต้องไปร่วมพัฒนาระบบงานที่มี 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/