PlusMagi's Blog By Pitt Phunsanit API,Frontend,JavaScript,REST,technology การยิง 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 ยุคปัจจุบัน

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 ที่ทันสมัยและมีประสิทธิภาพสูงสุด ทำให้เราสามารถสร้างเว็บแอปพลิเคชันที่ทรงพลัง มีความเสถียร และพร้อมรองรับการขยายตัวในอนาคตได้อย่างแท้จริง


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

Exit mobile version