เกริ่นกันก่อน

สำหรับผู้อ่านที่เข้ามาในบทความนี้แล้วรู้จักความหมายของ RESTful อยู่แล้วให้ข้ามไปที่ตอนที่ 2 ได้เลยนะครับ ซีรี่ส์นี้จะแบ่งออกเป็นสองตอนคือ

  • ตอนที่ 1 รู้จักกับ RESTful
  • ตอนที่ 2 การใช้งาน Lumen
restful

REST Web Service

รู้จักกับ RESTful

REST (Representational State Transfer) คือวิธีการนึงในการทำเว็บเซอวิส (การจัดเตรียมข้อมูล/ให้บริการข้อมูลแก่ผู้ที่เรียกใช้) ถ้าเทียบกับมาตรฐานเว็บเซอวิสตัวอื่นๆแล้ว REST เนี่ยถือเป็นมาตรฐานนึงที่เรียบง่ายมากก การที่มันเรียบง่ายเนี่ยทำให้การ implement มันก็ง่ายเช่นกัน แต่จริงๆแล้วข้อดีของ REST เนี่ยมันยังมีมากกว่านั้นเช่น

  • Performance ดีกว่า ถ้าเทียบกับเว็บเซอวิสแบบเก่าแล้วเนี่ย ตัว REST มีปริมาณการรับส่งข้อมูลที่น้อยกว่ามากๆ ผู้แต่งคิดว่าน่าจะเป็นเพราะรูปแบบของข้อมูลที่ตัว REST ใช้ซึ่งก็คือ JSON เนี่ยมันมีขนาดเล็กกว่าเว็บเซอวิสแบบเก่าๆ อ้อ เว็บเซอวิสแบบเก่าส่วนมากเค้าจะใช้รูปแบบ xml นะครับ ซึ่งเจ้าเป็นเพราะเจ้า xml เนี่ยแหละที่ทำให้ประมาณข้อมูลค่อนข้างเยอะ เนื่องจากต้องแปะทั้ง header บลาๆ แล้ว xml โครงสร้างภาษามันก็ขนาดใหญ่พอสมควร <xxx>zzz</xxx> ในขณะที่ JSON เขียนแค่ {xxx: zzz}
  • พัฒนาง่ายกว่า ด้วยความที่ REST เนี่ยมันพึ่งจะเกิดมาเมื่อปี 2000 ทำให้มันไม่มีมาตรฐานอะไรเลย ถ้าหากต้องการเขียนเว็บเซอวิสซักตัวเนี่ยผู้พัฒนาก็ต้องทำการออกแบบรูปแบบข้อมูลเสียเอง (อ่าว ฮา) ถึงแม้มันจะยืดหยุ่น แต่ก็ยังมีข้อเสียตรงที่มันไม่มีมาตรฐานนี่แหละ ที่ทำให้การทำออกแบบเว็บเซอวิสด้วย REST ซักตัวเนี่ย ก็ต้องอาศัยการเรียนรู้และทำความเข้าใจอยู่พอสมควร แต่ก็พอจะมีแนวทางจากคนที่มีประสบการณ์ออกแบบไว้เหมือนกันครับ ลองดูลิงก์นี้เลย (http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api)

จากข้อดีทั้งสองข้อเนี่ยทำให้ผู้แต่งคิดว่า เอ้อ REST เนี่ยแหละ ที่เราจะเอามาใช้ในการสร้างเว็บเซอวิสของเรา แล้ว REST เนี่ยมันมีคุณสมบัติยังไงมั่งล่ะเนี่ยมาดูต่อกันครับ

คุณสมบัติของ REST

มารู้จักกับ REST ให้ดีขึ้นอีกระดับกันครับ กับคุณสมบัติของ REST

  • เรียกใช้งานผ่าน HTTP protocol HTTP ก็คือโปรโตคอลที่เราใช้ในการเข้าเว็บในปัจจุบันเนี่ยแหละครับ ทำให้เข้าถึงข้อมูลได้ง่ายมากครับ
  • URL สื่อสารชัดเจน หากลองอ่านแนวทางการออกแบบที่ผู้แต่งได้แปะไว้ด้านบนเนี่ย (แปะใหมก็ได้ กดโลด) จะรู้ว่าการออกแบบ URL ให้กับ REST เนี่ยมันต้องสื่อสารแบบชัดเจนมาก เช่น โปรโตคอลสำหรับขอข้อมูลหนังสือทั้งหมดจะเป็น GET /book ถ้าจะขอหนังสือเล่มที่ 3 ก็จะใช้เป็น GET /book/3 เป็นต้น
  • ใช้ HTTP Method ที่เหมาะสม Method หลักๆที่ REST ใช้จะมีดังนี้ครับ
GET สำหรับขอข้อมูลต่างๆ
POST  สำหรับเพิ่มข้อมูล
PUT  สำหรับอัพเดทข้อมูลที่มีอยู่แล้ว
DELETE สำหรับลบข้อมูล
  • SSL จำเป็นมากนะ ด้วยความที่มันใช้ protocol HTTP เนี่ย ทำให้มันถูกเข้าถึงจากที่ไหนก็ได้ เว็บเซอวิสของคุณจะไม่มีความปลอดภัยเลยถ้าหากคุณใช้แค่ HTTP ธรรมดา เพราะตัวโปรโตคอล HTTP เนี่ยไม่มีการเข้ารหัสข้อมูลอะไรเลย หมายความว่าถ้าหากมีคนที่ไม่ประสงค์ดีดักจับข้อมูล เค้าคนนั้นก็จะรู้ข้อมูลของคุณโดยง่ายมาก ดังนั้นใช้ SSL เถอะครับ

เรารู้จัก REST กันมาพอสมควรแล้ว ต่อมา เราจะมารู้จัก Lumen กันครับ

แล้ว Lumen ล่ะ

Lumen คือ PHP framework ที่ถูกพัฒนามาจาก Laravel ผู้พัฒนาซึ่งก็คือนาย Taylor Otwell เนี่ยเค้ามีความคิดที่จะพัฒนา Laravel ให้เป็น Framework ที่มีน้ำหนักเบาแลความเร็วเพิ่มมากขึ้น น้ำหนักในที่นี้หมายถึงจำนวนแพ็คเกจที่ Laravel มันพ่วงมาด้วย นายคนนี้เค้าบอกว่าหลายๆตัวมันค่อนข้างเกินจำเป็นสำหรับการนำมาทำเว็บเซอวิส (สำหรับคนที่ไม่รู้ว่า Laravel มีปัญหาเรื่องความเร็วเนี่ยลองอ่านบทความนี้ดูครับ)

บทสรุป

หวังว่าบทความนี้จะทำให้ผู้อ่านมีความกระจ่างและเข้าใจ RESTful มากขึ้นนะครับ ในส่วนของการติดตั้งและฟีเจอร์ต่างๆของ Lumen จะขออนุญาติมาต่อในตอนต่อไปของบทความนะครับ หากมีส่วนไหนของบทความที่ผิดไปจากความเป็นจริง ก็สามารถร่วมแสดงความเห็น/ทักท้วงด้านล่างเลยนะครับ ขอบคุณครับ