0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Sử Dụng Fetch trong JavaScript

Đăng vào 1 tháng trước

• 5 phút đọc

Chủ đề:

KungFuTech

Hướng Dẫn Sử Dụng Fetch trong JavaScript

Giới thiệu

fetch là một hàm tích hợp sẵn trong JavaScript được sử dụng để thực hiện các yêu cầu mạng, chẳng hạn như lấy dữ liệu từ API hoặc gửi dữ liệu đến máy chủ. Nó giúp đơn giản hóa việc xử lý các tác vụ bất đồng bộ so với các phương pháp cũ hơn như XMLHttpRequest.

Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về fetch, cú pháp cơ bản, cách sử dụng cho các yêu cầu GET và POST, cũng như những lưu ý quan trọng khi sử dụng hàm này.

Cú Pháp Cơ Bản

Cú pháp cơ bản của fetch như sau:

javascript Copy
fetch(url, options)
  .then(response => response.json())  // Chuyển đổi phản hồi sang JSON
  .then(data => console.log(data))    // Làm việc với dữ liệu
  .catch(error => console.error('Error:', error));
  //url → địa chỉ của tài nguyên (điểm cuối API, tệp, vv).
  //options → đối tượng tùy chọn để cấu hình yêu cầu (phương thức, tiêu đề, body).

Ví dụ Cơ Bản

Dưới đây là một ví dụ cơ bản về cách sử dụng fetch:

Yêu Cầu GET

javascript Copy
fetch("https://jsonplaceholder.typicode.com/posts/1")
  .then(response => response.json())
  .then(data => console.log(data));

Yêu Cầu POST

javascript Copy
fetch("https://jsonplaceholder.typicode.com/posts", {
    method: "POST",
    headers: {
        "Content-Type": "application/json"
    },
    body: JSON.stringify({
        title: "Xin chào",
        body: "Đây là một bài kiểm tra",
        userId: 1
    })
})
.then(response => response.json())
.then(data => console.log(data));

Đặc Điểm Nổi Bật của Fetch

  • fetch là bất đồng bộ (non-blocking).
  • Luôn trả về một Promise.
  • So với XMLHttpRequest, fetch đơn giản và hiện đại hơn.
  • Các lỗi như URL sai hoặc mất kết nối internet sẽ kích hoạt .catch().

So Sánh Fetch và XMLHttpRequest

Đặc điểm Fetch XMLHttpRequest
Cách tiếp cận Dựa trên Promise (sạch hơn, dễ dàng nối tiếp với .then() / async-await) Dựa trên callback (có thể gây rối với callback lồng nhau)
Độ dài mã Ngắn gọn và đơn giản Cồng kềnh và khó đọc
Phương thức Cung cấp các phương thức tiện lợi như .json(), .text(), .blob() Phải phân tích responseText thủ công
Xử lý lỗi Lỗi mạng kích hoạt .catch(), nhưng lỗi HTTP (như 404/500) cần xử lý thủ công Phải kiểm tra xhr.status và onerror
Hỗ trợ streaming Không
Tương thích trình duyệt Các trình duyệt hiện đại (không hỗ trợ IE) Hoạt động ngay cả trên trình duyệt cũ (như IE5+)

Thực Tiễn Tốt Nhất Khi Sử Dụng Fetch

  • Kiểm Tra Phản Hồi: Luôn kiểm tra phản hồi từ máy chủ để đảm bảo rằng không có lỗi. Bạn có thể kiểm tra mã trạng thái HTTP để xác minh rằng yêu cầu đã thành công trước khi xử lý dữ liệu.
javascript Copy
fetch(url)
  .then(response => {
      if (!response.ok) {
          throw new Error('Network response was not ok ' + response.statusText);
      }
      return response.json();
  })
  .then(data => console.log(data))
  .catch(error => console.error('Fetch error:', error));
  • Xử Lý Lỗi: Sử dụng .catch() để xử lý các lỗi có thể xảy ra. Điều này giúp đảm bảo rằng ứng dụng của bạn không bị treo khi xảy ra lỗi.
  • Sử Dụng Async/Await: Nếu bạn muốn mã trở nên rõ ràng hơn, bạn có thể sử dụng cú pháp async/await để làm cho mã của bạn trông giống như mã đồng bộ.
javascript Copy
async function fetchData() {
    try {
        const response = await fetch(url);
        if (!response.ok) {
            throw new Error('Network response was not ok ' + response.statusText);
        }
        const data = await response.json();
        console.log(data);
    } catch (error) {
        console.error('Fetch error:', error);
    }
}

Những Cạm Bẫy Thường Gặp

  • Không Xử Lý Lỗi HTTP: Nhiều nhà phát triển thường quên xử lý các lỗi HTTP như 404 hoặc 500. Điều này có thể dẫn đến trải nghiệm người dùng kém.
  • Quên Cấu Hình Tiêu Đề: Khi gửi dữ liệu, hãy chắc chắn rằng bạn đã cấu hình tiêu đề Content-Type đúng cách.
  • Không Kiểm Tra Kết Quả Phản Hồi: Đảm bảo rằng bạn không giả định dữ liệu luôn có sẵn mà không kiểm tra.

Mẹo Tối Ưu Hiệu Suất

  • Sử Dụng Batching: Nếu bạn cần gửi nhiều yêu cầu, hãy xem xét việc gộp chúng lại để giảm số lần gọi mạng.
  • Caching: Sử dụng caching để giảm thiểu số lượng yêu cầu tới máy chủ.
  • Theo Dõi Hiệu Suất: Sử dụng các công cụ như Chrome DevTools để theo dõi hiệu suất của các yêu cầu fetch của bạn.

Kết Luận

Hàm fetch trong JavaScript là một công cụ mạnh mẽ giúp đơn giản hóa việc thực hiện các yêu cầu mạng. Với cú pháp dễ hiểu và khả năng xử lý bất đồng bộ tốt, fetch là lựa chọn lý tưởng cho các nhà phát triển hiện đại. Hãy nhớ áp dụng các thực tiễn tốt nhất và tránh những cạm bẫy thường gặp để tận dụng tối đa chức năng của fetch.

Nếu bạn muốn tìm hiểu thêm về JavaScript và các công nghệ liên quan, hãy theo dõi các bài viết khác trên blog của chúng tôi!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào