สิ่งท่ี่ควรมีความรู้ก่อนอ่านบืความนี้คือ
- ความหมายของ Web API
- ความหมายของ Web Service
- การเรียก Web Service ผ่าน HTTP
Rest API คืออะไร
บางคนอาจยังไม่เคยได้ยินหรือบางคนเคยได้ยินหรือไม่เคยรู้จริงๆว่า Rest API เนี่ยคืออะไรกันแน่ ซึ่งถ้าเป็นความหมายแบบกระชับนี่ก็คือ เป็น API ที่จัดรูปแบบการเรียกแบบ HTTP (GET,POST,PUT,DELETE) ให้เข้าเป็นมาตรฐานมากขึ้น
จากเมื่อก่อนในการเขียน Web API แต่ละครั้งผ่าน HTTP จะไม่มีการกำหนดรูปแบบการเรียกที่ตายตัวจึงทำให้เราไม่สามารถดู แค่ชื่อ Web Service แล้วสามารถเดาได้เลยว่าคือเว็บ Service สำหรับทำอะไรกันแน่ Rest API จึงได้ตั้งข้อกำหนดพื้นฐานดังนี้
HTTP
ถ้าเป็น แบบ GET คือ การขอข้อมูลทั้งหมด
ถ้าเป็น แบบ POST คือ การ สร้างข้อมูลขึ้นมาใหม่
ถ้าเป็น แบบ PUT คือ การแก้ไขข้อมูล
ถ้าเป็นแบบ DELETE คือ การลบข้อมูล
รูปแบบของ URL
- URL จะเป็น Noun ไม่ควรเป็น Verb และควรเป็น Noun แบบพหูพจน์ถ้าเป็นไปได้ ตัวอย่างเช่น
/books ให้หมายถึง ดึงข้อมูลหนังสือทั้งหมดถ้าเป็นแบบ GET
/books ให้หมายถึง สร้างหนังสือใหม่ทั้งหมดถ้าเป็นแบบ POST
/books ให้หมายถึง แก้ไขข้อมูลหนังสือทั้งหมดถ้าเป็นแบบ PUT
/books ให้หมายถึง ลบข้อมูลหนังสือทั้งหมดถ้าเป็นแบบ DELETE
- ใช้ Sub name ในการเชิ่อมความสัมพันธืของข้อมูล ตัวอย่างเช่น
/books/2 ให้หมายถึง ดึงข้อมูลหนังสือที่เป็น ID = 2 ถ้าเป็น แบบ GET
/books/2 ให้หมายถึง สร้างหนังสือใหม่ที่เป็น ID = 2 ถ้าเป็น แบบ POST
/books/2 ให้หมายถึง แก้ไขข้อมูลหนังสือที่เป็น ID = 2 ถ้าเป็น แบบ PUT
/books/2 ให้หมายถึง ลบข้อมูลหนังสือที่เป็น ID = 2 ถ้าเป็น แบบ DELETE
- URL ควรมีระบุ version api เพื่อรองรับการเปลี่ยนแปลง version api ตัวอย่างเช่น
/api/v1/books หมายถึง เราใช้ API version1 ในการดึงข้อมูลหนังสือทั้งหมดถ้าเป็นแบบ GET
/api/v1/books หมายถึง เราใช้ API version1 ในการสร้างหนังสือใหม่ที่เป็น ID = 2 ถ้าเป็นแบบ POST
/api/v1/books หมายถึง เราใช้ API version1 ในการแก้ไขข้อมูลหนังสือทั้งหมดถ้าเป็นแบบ PUT
/api/v1/books หมายถึง เราใช้ API version1 ในการลบข้อมูลหนังสือทั้งหมดถ้าเป็นแบบ DELETE
- หากการดึงข้อมูลที่ซับซ้อนให้ทำการ Query String ด้วย GET เช่น
/api/v1/books?field=name,price,author,categoies&sort=asc ให้หมายถึง ใช้ API version ที่ 1 มาดึงข้อมูลหนังสือทั้งหมดโดยต้องการเฉพาะ Field name,price,author, categories มาแสดงพร้อมทั้งให้เรียงตามชื่อหนังสือจากน้อยไปมาก
HTTP Response Code
- ควรมีการ Return HTTP Status Code กลับทุกครั้ง
- หากมี ERROR ควร Return Status Code ให้ถูกต้องตามสถานะ
แนะนำควรใช้ Status Code 10 อันดับแรกดังนี้
- 204 NO CONTENT - [DELETE,PUT]
- 500 INTERNAL SERVER ERROR
หวังว่าโพสน์นี้จะช่วยเพิ่มความเข้าใจและมีประโยชน์ครับ ขอบคุณครับ
Refference
https://www.restapitutorial.com/lessons/restquicktips.html
https://www.algorithmtut.com/เลิกเขียน-restful-api-แบบแย่ๆ/