ป้ายกำกับ: Idempotency

Postman Complete Guide: การยิง HTTP PUT สำหรับอัปเดตข้อมูลแบบ Replace ทั้ง Object พร้อมตัวอย่าง PayloadPostman Complete Guide: การยิง HTTP PUT สำหรับอัปเดตข้อมูลแบบ Replace ทั้ง Object พร้อมตัวอย่าง Payload

ในโลกของการพัฒนาซอฟต์แวร์สมัยใหม่ การสื่อสารระหว่างระบบต่างๆ ผ่าน Application Programming Interfaces (APIs) ถือเป็นหัวใจสำคัญที่ขับเคลื่อนการทำงานของแอปพลิเคชันขนาดใหญ่ แนวคิด RESTful API ได้กำหนดมาตรฐานในการจัดการทรัพยากรข้อมูล ซึ่งทำให้เราสามารถออกแบบ Endpoint ที่มีประสิทธิภาพและคาดเดาได้ การทำความเข้าใจถึง HTTP Methods แต่ละตัวจึงไม่ใช่แค่เรื่องทางเทคนิค แต่คือรากฐานของการสร้างระบบที่เสถียรและขยายขนาดได้

💡 HTTP PUT คืออะไร? หลักการ Replace ทั้ง Object

HTTP PUT เป็น Method ที่ถูกออกแบบมาเพื่อใช้ในการอัปเดตทรัพยากรข้อมูล (Resource) ทั้งก้อน โดยมีหลักการที่สำคัญที่สุดคือ Idempotency ซึ่งหมายความว่า ไม่ว่าจะเรียกใช้งาน PUT ด้วย Payload เดิมซ้ำๆ กี่ครั้ง ผลลัพธ์ของสถานะทรัพยากรก็จะยังคงเหมือนเดิมเสมอ

เมื่อเราใช้ PUT เรากำลังบอก API ว่า “นี่คือ Object ใหม่ทั้งหมดสำหรับ ID นี้ จงแทนที่ข้อมูลเก่าด้วยสิ่งนี้โดยสมบูรณ์” ดังนั้น Payload ที่ส่งไปจึงต้องเป็นโครงสร้างข้อมูล (Object) ที่ครบถ้วนตาม Schema ของระบบ ไม่ว่าคุณจะลืมระบุฟิลด์ใดไป ระบบก็อาจถือว่าฟิลด์นั้นไม่มีอยู่จริงและทำการลบข้อมูลส่วนนั้นออกไป

🆚 PUT vs. PATCH: ความแตกต่างที่นักพัฒนาต้องรู้

ความแตกต่างระหว่าง PUT และ PATCH เป็นจุดที่นักพัฒนาต้องให้ความสำคัญอย่างยิ่งยวด:

  • PUT (Replace All): ใช้เมื่อคุณมีข้อมูล Object ที่สมบูรณ์และต้องการแทนที่ข้อมูลเก่าทั้งหมด หากคุณต้องการอัปเดตเพียงแค่ฟิลด์เดียว แต่ส่ง Payload ที่มีโครงสร้างไม่ครบถ้วน ระบบอาจเกิดข้อผิดพลาดหรือลบข้อมูลส่วนอื่นที่ไม่ถูกระบุออกไปได้
  • PATCH (Partial Update): ถูกออกแบบมาสำหรับการแก้ไขบางส่วน (Partial Update) ซึ่งจะปลอดภัยกว่าเมื่อเราทราบว่าต้องการเปลี่ยนแปลงเพียงแค่ฟิลด์ใดฟิลด์หนึ่งเท่านั้น

🛠️ การใช้งาน PUT ใน Postman ด้วย PostgreSQL Context

เมื่อเราใช้ Postman เพื่อจำลองการเรียก PUT API Endpoint ที่อยู่เบื้องหลังฐานข้อมูล PostgreSQL เราจะต้องส่ง Payload ที่เป็น JSON Body ที่สมบูรณ์ โดยกำหนด URL Path ให้ระบุ ID ของทรัพยากรที่ต้องการอัปเดต

ตัวอย่าง Payload (JSON Body)

สมมติว่าเรามีตาราง `products` ใน PostgreSQL และต้องการอัปเดตข้อมูลสินค้า ID 101 ให้เป็นข้อมูลชุดใหม่ทั้งหมด:

JSON

{<br>  "id": 101,<br>  "product_name": "Premium Widget",<br>  "price": 499.99,<br>  "is_active": true<br>}

การทำงานเบื้องหลัง (PostgreSQL Query)

เมื่อ API ได้รับ Payload นี้ ระบบ Backend จะแปลง JSON นี้ให้เป็นคำสั่ง SQL ที่สมบูรณ์เพื่อทำการ UPDATE ข้อมูลใน PostgreSQL โดยคำสั่งนี้จะทำการแทนที่แถวข้อมูลทั้งหมดของ ID 101:

SQL

UPDATE products SET product_name = 'Premium Widget', price = 499.99, is_active = true WHERE id = 101;

✅ บทสรุป: เมื่อไหร่ควรใช้ PUT

การใช้ HTTP PUT เหมาะสมที่สุดเมื่อคุณมั่นใจว่า Payload ที่คุณส่งไปนั้นเป็นข้อมูลที่สมบูรณ์ (Complete Object) และคุณต้องการให้ระบบทำการแทนที่ข้อมูลเก่าทั้งหมดอย่างไม่มีข้อสงสัย หากคุณไม่แน่ใจว่าจะเปลี่ยนแปลงแค่ฟิลด์ใดฟิลด์หนึ่ง การใช้ PATCH จะเป็นทางเลือกที่ปลอดภัยและเหมาะสมกว่าเสมอ การเข้าใจความแตกต่างนี้จะช่วยให้คุณสร้าง API ที่มีเสถียรภาพและป้องกันการสูญหายของข้อมูลโดยไม่ตั้งใจ