รู้จักกับ HTTP Request ประเภท PUT และ DELETE

คนทำเว็บที่ได้ไปยุ่งกับการเขียน HTTP Request (ซึ่งมักจะได้ไปยุ่งกับตอนได้เขียนเว็บเชื่อมกับ API ของอะไรสักอย่าง) คงเคยเห็นเมธ็อดหลักๆทั้ง 4 ประเภท  คือ GET POST PUT และ DELETE แต่เรามักจะได้ใช้กันแค่ GET และ POST เท่านั้น  แต่เรากลับไม่ค่อยได้ใช้ PUT และ DELETE กันเลย

GET และ POST

โดยทั่วไปเรามักจะได้ทำงานกับ GET และ POST เท่านั้น  โดย GET จะเป็นการส่ง URL ร้องขอข้อมูลไปตรงๆ  เช่น

GET http://application.api/user/10012

หรือการส่งไปพร้อมกับคิวรี่สตริงใน URL เช่น

GET http://application.api/search/?keyword=camera

ส่วน POST จะเป็นการส่งข้อมูลกลับไปหาแหล่งข้อมูลที่มีอยู่แล้ว  เช่น

POST http://application.api/user/create

โดยมันจะส่งข้อมูลชุดหนึ่งแนบไปด้วย  อย่างในกรณีตัวอย่างนี้คือจะส่งข้อมูลสำหรับให้สร้าง User ใหม่ไปด้วยนั่นเอง

PUT และ DELETE

PUT นั้นลักษณะการทำงานโดยรวมจะคล้ายกับ POST ต่างกันที่ว่า PUT จะส่งข้อมูลไปยังตำแหน่งที่ยังไม่มีอยู่  และสร้างข้อมูลขึ้นในตำแหน่งนั้นๆ  หรือเพื่อไปอัพเดทข้อมูลในตำแหน่งที่มีอยู่แล้ว  ยกตัวอย่างเช่นข้างบน  ที่เรา POST ข้อมูลไปยัง /user/create เพื่อสร้าง User ใหม่  แต่ PUT จะส่งไปที่

PUT http://application.api/user/10012

การส่ง PUT ไปที่นี้คือจะได้ผลลัพธ์ 2 กรณีคือ

  1. ถ้ายังไม่มี user id 10012 ให้ทำการสร้าง user ใหม่ด้วย id 10012 ด้วยข้อมูลที่ส่งไป
  2. ถ้ามี user id 10012 อยู่แล้ว  ให้อัพเดทข้อมูลด้วยข้อมูลที่ส่งไป

ส่วนการ DELETE นั้น  จะเป็นการสั่งลบข้อมูลที่มีอยู่แล้ว  เช่น

DELETE http://application.api/user/10012

เพื่อสั่งให้ลบข้อมูลผู้ใช้ id 10012

การนำไปใช้งาน

ปกติถ้าเราเขียนเว็บไซต์ปกติ  เราอาจจะไม่ได้มีโอกาสใช้ PUT และ DELETE เท่าไหร่นัก  แต่ถ้าเราได้มาเขียน API Server (โดยเฉพาะ REST) เราอาจจะได้เขียนรองรับ Request ประเภทนี้ก็ได้ครับ  แต่ทั้งนี้มันก็ไม่ได้จำเป็นว่าจะต้องใช้ PUT และ DELETE เท่าไหร่นัก

ทำไม?

ในกรณีของ PUT โดยปกติแล้วเราสามารถทำด้วย POST ได้อยู่แล้ว  กอปรกับฝั่งคนเขียน Client ให้ตายยังไงก็ยังเคยชินกับ POST มากกว่า  หลายคนจึงเลือกที่จะอิมพลีเมนต์แค่ POST เข้าไปอย่างเดียว

ส่วนในกรณีของ DELETE โดยปกติเรามักจะทำการขอลบข้อมูลผ่าน GET อยู่แล้ว  เช่นถ้าเราจะลบข้อมูลผู้ใช้ id 10012 เรามักจะใช้

GET http://application.api/user/10012/delete

แทนที่จะใช้

DELETE http://application.api/user/10012

ดังนั้นในที่สุดแล้ว  ต่อให้เราอิมพลีเมนต์เข้าไปแค่ GET และ POST มันก็สามารถทำงานครอบคลุมทั้งหมดได้อยู่แล้ว  โดยไม่จำเป็นจะต้องไปยุ่งเกี่ยวกับ PUT และ DELETE เลย  แต่ถึงอย่างนั้นการที่เราอิมพลีเมนต์ PUT และ DELETE เข้าไปก็ไม่ใช่เรื่องผิด  เพราะมันช่วยให้ระบบสามารถเข้าใจและแบ่งประเภทของ request ได้สะดวกขึ้นและเป็นระเบียบขึ้นนั่นเอง

Posted by Jirayu

WordPress Developer ที่พอมีประสบการณ์อยู่บ้าง วันไหนไม่ทำงานอยู่บ้านว่างๆ ก็นั่งเลี้ยงแมว

Comments