เลิกเขียน RESTful API แบบแย่ๆ แล้วหันมาเขียนให้มันถูกต้องตามมาตรฐานกันดีกว่า

ผมเชื่อว่าหลายๆ ที่คนที่เข้ามาอ่านบทความนี้จะต้องทำงานอยู่ในส่วนของ Back-end Developer หรือกำลังเขียน API ด้วย RESTful เราจะไม่พูดถึง SOAP เพราะมันเก่าไป และเดาได้ว่าบางคนคงเขียน API แบบขอไปทีอย่าง เช่น การตั่งชื่อไม่ได้มีหลักการที่ถูกต้อง การเลือกใช้ HTTP Method ก็คงใช่แต่ POST, GET หรืออาจจะไม่เคยเขียนจัดการกับ Error ด้วย HTTP Status Code จากประสบการณที่ผ่านมาหลายปีผมก็ทำงานทั่ง Front-end และ Back-end ผมก็คนนึงที่ไม่ได้ทำตามมาตรฐานสักเท่าไร ยิ่งสมัยเริ่มเขียน API ใหม่ๆ สักสองปีที่แล้วบอกเลยกันเละแน่นอน อิอิ!! แม้แต่ตอนนี้ก็ยังเละอยู่ เดียวเราจะมาดูกันว่า RESTful ที่ดีควรเป็นยังไง

 

1. การตั่งชื่อต้องใช้ nouns อย่าใช้ verbs

ข้อควรจำหลีกเลี่ยงการตั่งชื่อด้วย verbs และอย่าตั่งชื่อด้วยตัวเล็กตัวใหญ่

 

2. อย่าใช้ GET ในการแก้ไขข้อมูลใดๆ ทั่งสิ้น หรือสร้างข้อมูลใหม่

แนะนำให้ไปใช้ POST เพื่อความปลอดภัยหลีกเลี่ยงการโดนทำ Injection หรือการส่งค่าไม่พึ่งประสงค์ไปในระบบและนี้คือตัวอย่างที่ผิด

 

3. ให้ใช้คำ nouns แบบพหูพจน์ (plural nouns)

 

4. ใช้ Standard HTTP Method

 

5. เปิดใช้งาน overriding HTTP method

เพราะบาง server หรือบาง Proxy เปิดให้เราส่งได้แค่ GET/POST ดังนั่นจำเป็นต้องทำ HTTP Header X-HTTP-Method-Override เพื่อเปลี่ยนจากการทำ POST ไปเป็น PUT หรือ DELETE เช่น ตัวอย่างการเขียน JQuery เพื่อให้ทำ PUT ผ่าน POST

 

6. ใช้ sub-name ในการเชื่อมความสัมพันธ์ของข้อมูล

 

7. ควรระบุ content-type ของการสื่อสารด้วยทั่ง client และ server

–  ฝั่ง client ในกรณียิงด้วย postman หรือดูตัวอย่างโค้ดในข้อ 4

 –  ในส่วนของ server ผมจะยกตัวอย่าง ExpressJS  ตัว framework ในการทำ back-end ของ NodeJS สำหรับการทำระบุ content-type

 

8. อย่าลืมระบุ version API ด้วย

 

9. ใช้ HTTP Status Codes คู่ไปกับการใช้ Message ในการจัดการกับ Error ของระบบ

 

10. ในการดึงข้อมูลที่ซับซ้อนหรือมี state เยอะๆ ให้ทำ Query String  ด้วย GET

การดึงเอาสถานะของหนังสือที่ยังขายอยู่เช่น

 

หรือการเลือกแสดงผลข้อมูลว่าต้องการที่จะดูฟิลด์ Database ในฟิลด์ไหนบ้าง

 

การทำ sorting หรือ paginate ก็เช่นกัน

ข้อควรจำ: อย่าลืมเช็ค Escape string ในกรณีที่ฐานข้อมูลเป็นแบบ Relationship เช่นพวกที่ใช้คำสั่ง SQL ทั้งหลายในการคิวรี่และอย่าลืมเช็คความถูกต้องของข้อมูลก่อนส่งไปดึงที่ Database เสมอ เพื่อไม่ให้โดน Cross-site scripting หรือ Injection ต่างๆ แม้แต่ NoSQL เองก็โดย Injection ได้แล้วนะครับ มีข่าวออกมาแล้ว

11. อย่าลืมทำ Document นะครับ ฮ่าๆๆๆ !!!

 

Facebook Comments