ป้ายกำกับ: Delete

การยิง HTTP PUT, PATCH และ DELETE ด้วย Fetch API แทนการใช้ $.ajax() ใน jQueryการยิง HTTP PUT, PATCH และ DELETE ด้วย Fetch API แทนการใช้ $.ajax() ใน jQuery

ในโลกของการพัฒนาเว็บแอปพลิเคชันสมัยใหม่ การสื่อสารระหว่าง Client-Side และ Server-Side ผ่าน RESTful API ถือเป็นหัวใจหลักของระบบทั้งหมด นักพัฒนามักต้องจัดการกับคำสั่ง HTTP ที่หลากหลาย ไม่ว่าจะเป็นการสร้าง (POST), การอ่าน (GET), หรือที่สำคัญคือการแก้ไขข้อมูลบางส่วนหรือลบข้อมูล ซึ่งในอดีตเครื่องมืออย่าง jQuery’s $.ajax() เคยเป็นมาตรฐานในการจัดการเรื่องนี้ แต่เมื่อ JavaScript มีความก้าวหน้าและมี API พื้นฐานที่ทันสมัยกว่าเข้ามาแทนที่ การทำความเข้าใจวิธีการเรียกใช้คำสั่งเหล่านี้ด้วย Fetch API จึงเป็นทักษะสำคัญที่นักพัฒนาทุกคนควรทราบ


เจาะลึกรายละเอียดและประเด็นสำคัญ

หัวใจของการทำงานกับ HTTP PUT, PATCH และ DELETE คือการทำความเข้าใจว่าแต่ละคำสั่งมีวัตถุประสงค์ที่แตกต่างกันอย่างไร PUT ใช้สำหรับการแทนที่ทรัพยากรทั้งหมด (Full Replacement) ส่วน PATCH ใช้สำหรับการอัปเดตข้อมูลบางส่วนเท่านั้น (Partial Update) และ DELETE ใช้สำหรับการลบทรัพยากร การใช้ Fetch API ทำให้เราสามารถกำหนด `method` และส่งข้อมูล Payload ไปยัง Endpoint ได้อย่างเป็น Native โดยอาศัย Promise-based structure ซึ่งทำให้การจัดการ Asynchronous Code มีความสะอาดและอ่านง่ายกว่าเดิมมาก

ข้อได้เปรียบที่ชัดเจนที่สุดคือการลด Dependency และการใช้มาตรฐานของ JavaScript อย่างเต็มรูปแบบ แทนที่จะพึ่งพาไลบรารีภายนอกอย่าง jQuery ในงานพื้นฐานด้าน Networking การใช้ Fetch API ทำให้โค้ดของเรามีความกระชับ ทันสมัย และสอดคล้องกับแนวทางปฏิบัติที่ดีที่สุด (Best Practices) ของ Web Development ยุคปัจจุบัน

Plain Text

const API_URL = 'https://api.example.com/users';
// 1. PUT (แทนที่ข้อมูลทั้งหมด)
async function putData(id, data) {
    try {
        const response = await fetch(`${API_URL}/${id}`, {
            method: 'PUT', // กำหนด Method เป็น PUT
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify(data),
        });
        if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`);
        return await response.json();
    } catch (error) {
        console.error("Error performing PUT:", error);
    }
}
// 2. PATCH (อัปเดตข้อมูลบางส่วน)
async function patchData(id, updates) {
    try {
        const response = await fetch(`${API_URL}/${id}`, {
            method: 'PATCH', // กำหนด Method เป็น PATCH
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify(updates),
        });
        if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`);
        return await response.json();
    } catch (error) {
        console.error("Error performing PATCH:", error);
    }
}
// 3. DELETE (ลบข้อมูล)
async function deleteData(id) {
    try {
        const response = await fetch(`${API_URL}/${id}`, {
            method: 'DELETE', // กำหนด Method เป็น DELETE
        });
        if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`);
        // สำหรับการลบ มักจะคืนค่า 204 No Content
        return response.status === 204 ? true : await response.json();
    } catch (error) {
        console.error("Error performing DELETE:", error);
    }
}
// ตัวอย่างการเรียกใช้:
// putData(1, { name: "New Name", email: "[email protected]" });

การนำไปประยุกต์ใช้ในชีวิตและการทำงานยุคใหม่

  • การสร้าง Single Page Applications (SPAs): ในเฟรมเวิร์กสมัยใหม่อย่าง React หรือ Vue การใช้ Fetch API ทำให้เราสามารถจัดการ Lifecycle ของ Component ได้อย่างราบรื่น โดยเรียก API เพื่อดึงข้อมูลและอัปเดต State ทันทีที่ผู้ใช้โต้ตอบกับ UI
  • การจัดการ Error และ Loading States: การใช้ `async/await` ร่วมกับ Fetch API ช่วยให้เราสามารถเขียนโค้ดที่อ่านง่ายและมีโครงสร้างในการจัดการสถานะ (Loading, Success, Error) ได้อย่างเป็นระบบ ทำให้แอปพลิเคชันมีความเสถียรสูง
  • การทำ Optimistic UI Updates: เราสามารถใช้ Fetch API เพื่อส่งคำขอไปยัง Server และในขณะที่รอการตอบกลับ (Pending) ก็ทำการอัปเดต UI ให้ผู้ใช้เห็นก่อนทันที ทำให้ประสบการณ์ของผู้ใช้งานรู้สึกรวดเร็วและลื่นไหล แม้ว่า Backend จะยังประมวลผลอยู่

โดยสรุปแล้ว การเปลี่ยนจากการพึ่งพาไลบรารีเก่าๆ มาใช้ Fetch API ในการจัดการ HTTP PUT, PATCH และ DELETE ไม่ได้เป็นเพียงแค่การเปลี่ยน Syntax แต่เป็นการยกระดับแนวคิดในการเขียนโค้ดให้เข้าสู่มาตรฐานของ JavaScript ที่ทันสมัยและมีประสิทธิภาพสูงสุด ทำให้เราสามารถสร้างเว็บแอปพลิเคชันที่ทรงพลัง มีความเสถียร และพร้อมรองรับการขยายตัวในอนาคตได้อย่างแท้จริง


อ่านเพิ่มเติม