มาใช้ Lumen ทำ RESTful API กัน

สวัสดีครับ ในบล๊อคนี้ผมจะมานำเสนอวิธีการนำ Lumen (version 5.5.1) มาใช้ในการทำ RESTFul API กันโดยการ Call API นั้นจะทำผ่าน Postmen เพื่อดูผลลัพธ์กัน มาเริ่มกันเลยดีกว่า…

ก่อนอื่นมาทำความรู้จักกับ Lumen กันก่อนคับ

Lumen คือ PHP Framework ที่ถูกพัฒนามาจาก Laravel โดยมีแนวคิดที่จะทำให้ Laravel Framework นั้นมีน้ำหนักเบาขึ้นโดยการตัด Package บางตัวที่เกินความจำเป็นต่อการนำมาทำ Web Service ออกไปนั้นเอง

The stunningly fast micro-framework by Laravel.

Lumen Server Requirements

  • PHP >= 7.0
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Mbstring PHP Extension

การติดตั้ง Lumen

การติดตั้ง Lumen นั้นต้องทำผ่านทาง Composer โดยการใช้คำสั่ง

composer create-project --prefer-dist laravel/lumen blog

(ใครที่ยังไม่ได้ติดตั้งนั้นสามารถหาโหลดและดูวิธีติดตั้งได้จาก Composer)

จะได้ File Project ที่อยู่ใน Folder “ blog ” มาดังนี้

จากนั้นใช้คำสั่งใน Project

php -S localhost:8000 -t public

จะต้องได้หน้าตาประมาณนี้

Config Project

  1. ทำการ Generate Key ก่อนโดยวิธีการ Generate นั้นสามารถทำได้หลายท่า แต่ในที่นี้ผมเลือกใช้วิธีการหา Key จาก Route เอาโดยการเพิ่มคำสั่งดังภาพ

จากนั้นทำการเรียก Route ที่กำหนดผ่าน Browser หรือ Postmen ก็ได้จะได้ประมาณนี้

Postmen
Browser FireFox

นำ Text ที่ได้ไปใส่ไว้ในไฟล์ “.env” ตรงส่วน “APP_KEY”

2.จากนั้นทำการ Config File “.env” ก่อนเพื่อทำการเรียกใช้ Database

3.ทำการสร้าง Database และเพิ่ม Table ชื่อ “tests”

4.จากนั้นทำการเปิดใช้ Eloquent โดยการแก้ไขไฟล์ “app.php” ที่อยู่ใน Folder “bootstrap”

เอา comment บรรทัดที่ 28 ออก

มาเริ่มสร้าง RESTful API กันเลยดีกว่า

  1. ก่อนอื่นให้กำหนด Route กันก่อน (การกำหนดเส้นทางที่จะทำการรับส่งข้อมูล) โดยปรกตินั้น RESTful จะถูกเรียกใช้งานผ่าน HTTP protocol โดยแบ่งออกเป็น method หลัก ๆ ดังนี้
get => ใช้สำหรับขอข้อมูล
post => ใช้สำหรับส่งข้อมูลเพื่อเพิ่มข้อมูล
put => ใช้สำหรับแก้ไขหรือเปลี่ยนแปลงข้อมูลที่มีอยู่แล้ว
delete => ใช้สำหรับลบข้อมูล

ดังภาพตัวอย่าง

2.ทำการสร้าง Model โดยผมจะสร้างไว้ที่ “app/Model” สร้างไฟล์ชื่อ “Test.php” และเพิ่ม Code ดังภาพ

3.ทำการสร้าง Controller ไว้ใน “app/http/Controller/Api” ชื่อไฟล์ TestController.php และทำการเขียน Code ดังนี้

route => /get => function getItem()
route => /post => function postItem()
route => /put/{id} => function putItem()
route => /delete/{id} => function deleteItem()

4.ทดสอบการส่งค่าผ่านทาง Postmen

  • Post (ส่งค่าเข้าไป)
กรณีไม่ส่งค่าใด ๆ เข้าไป
ส่งค่า “product” และ “age” เข้าไป
  • get (จาก Code จะเป็นการนำค่าทั้งหมดมาแสดง)
แสดงค่าทั้งหมดใน Table “Tests”
  • put (แก้ไขค่าที่เพิ่มไปแล้วหรือมีข้อมูลอยู่)
แก้ไขข้อมูลที่ส่งค่าเข้าไปก่อนหน้านี้โดยเปลี่ยนชื่อ product จาก test เป็น example
  • delete (ลบข้อมูล)
ลบข้อมูลที่เพิ่มก่อนหน้านี้

ทดลองเรียกข้อมูลใหม่

จะเห็นได้ว่าข้อมูลที่เพิ่มเข้ามาจะหายไป

ข้อดี

  • Lumen มีขนาดเบากว่า Laravel มาก
  • Lumen นั้นเหมาะสำหรับใช้ทำ Web Service
  • การใช้ Lumen ในการทำ RESTful API นั้นค่อยข้างเข้าใจง่าย (สำหรับผู้ที่เคยผ่านการใช้งาน Laravel มาแล้วนั้นการใช้ Lumen อาจไม่ใช้เรื่องใหม่เลยก็ได้เพราะมีการใช้งานที่คล้าย ๆ กันมาก)
  • ตัว Lumen นั้นสามารถ Upgrade ให้เป็น Laravel (Full Package) ได้หรือเลือกเฉพาะที่จำเป็นได้ (คือมันสามารถเลือกเพิ่ม Package ของ Laravel ที่ต้องการใช้เพิ่มเข้าไปได้)

ข้อเสีย

  • ต้องทำการ Config เพิ่มเติมหลายอย่าง
  • ตัดคำสั่ง “artisan” ของ Laravel ส่วนมากออกไปซึ่งเป็นคำสั่งที่อำนวยความสะดวกมาก(สำหรับผมนะ55+)เช่นพวกคำสั่ง “make” หรือการ “migrate” ซึ่งท่นเวลาในการเขียน Code ลงได้เยอะทีเดียว (แต่ก็อย่างว่าคับมันสามารถ Config เพิ่มทีหลังได้แต่ค่อนข้างยุ้งยาก)
Like what you read? Give Yodsawat Santhi a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.