Request Method PUT-DELETE ฉบับใช้กับ PHP
สำหรับมือใหม่สิ่งที่ต้องทำเป็นอันดับแรกๆ น่าจะเป็นการทำความเข้าใจเรื่อง Request Method พวก GET, POST เป็นการกำหนดวิธีการในการส่งข้อมูล form จาก html เข้าไปทำงานต่อใน function php แต่ขอบอกเลยว่านอกจาก GET, POST แล้ว Request Method ยังมีพฤติกรรมอื่นๆ อีก เช่น PUT และ DELETE ที่จะทำให้มีทางเลือกมากขึ้นในการนำ Request Method ต่างๆ ไปประยุกต์ในการสร้าง function และเข้าใจโลกของการเขียนโปรแกรมใน node.js ด้วย ก่อนอื่นทำความเข้าใจเกี่ยวกับ GET กับ POST ที่เป็นพื้นฐานก่อน
- GET คือการ encrypt ชื่อ และ ค่า ของแต่ละ element ออกมาเป็นข้อความยาวๆ แล้วส่งข้อมูลผ่าน url เป็นการร้องขอ(Request) ไปยัง server
- POST คือการส่งข้อมูลผ่าน packet ของ http ซึ่งจะมองไม่เห็นข้อมูลที่ส่งไปนอกจากเปิดดูใน panel Network ของ browser (html 5 ขึ้นไปมีการเข้ารหัสก่อนส่ง packet แล้ว) ในส่วนของการ POST สามารถส่งข้อมูลไปหลากหลายรูปแบบกว่าการ GET ตามปกติด้วย เช่น สามารถส่งแบบ encode url เหมือน การ GET ก็ได้หรือ ส่งเป็นข้อความธรรมดา Textplain หรือ JSONencode ก็ได้ ซึ่งช่วยในเราสามารถรับข้อมูลจาก form ในรูปของ array ได้อย่างสะดวกมากขึ้น
ส่วนการใช้งาน PUT, DELETE เป็น Request Method ที่เห็นได้บ่อยในการเขียน javascript พวก node.js ที่มีการนำเอา javascript มาใช้งานในฝั่ง server ด้วย โดย PUT และ DELETE ไม่ต่างจากการใช้งาน GET, POST มากนัก วิธีการส่งก็เหมือนกับการ POST ตามปกติ เพียงแต่ใน php ยังไม่มีตัวแปรที่ใช้รับข้อมูลผ่านการ PUT, DELETE โดยตรงเหมือนกับ GET, POST ที่มีตัวแปร $_GET, $_POST ให้ใช้งานได้ง่าย จึงต้องมีการเขียนคำสั่งเพิ่มเพื่อดึงข้อมูลจากไฟล์ input ของ php โดยตรง ดังนี้
ในกรณีนี้ผมเขียน class ขึ้นมารับ request แทนการรับแบบปกติ (จะเอาคลาสไปใช้ทำอย่างอื่นต่อ) อยากให้ดู function getParams ผมเขียน function นี้ขึ้นมาเพื่อใช้ในการดึงข้อมูลจากฟอร์มเข้ามาเป็น array ทันทีที่มีการรับ Request Method เป็นอย่างอื่นนอกจาก GET, POST ปกติ ซึ่งจริงๆ ในกรณีที่เป็นการ GET, POST php ก็จะอ่านข้อมูลด้วยแบบเดียวกับที่ผมเขียนนี้ แต่อย่างที่บอกว่า php ไม่มี Request Method อื่น ให้ใช้นอกการ $_GET และ $_POST ผมจึงสร้าง function นี้ขึ้นมา
ส่วนตัวคิดว่าการเขียน routing ของเว็บไซต์แบบมี Request Method หลายแบบเขียนง่ายกว่ามาก เพราะมันสามารถแยกใช้งาน function ได้ตั้งแต่ Request method ที่ส่งมาเลย ทำให้การเขียน class สามารถกำหนดรูปแบบการทำงานจาก method ที่ถูกส่งมาได้เลย แม้ว่า javascript จะมีความเป็น machine language มากกว่า php ก็ตาม แต่ code ที่ได้ออกมาดูสั้นกว่าที่ควรจะเป็น และมีการใช้งาน condition น้อยลง ซึ่งส่งผลต่อประสิทธิภาพของเว็บไซต์ด้วย และจะยิ่งเห็นได้ชัดเมื่อเว็บไซต์มีขนาดใหญ่ขึ้น
Write a Comment