Axios: Gọi API Dễ Dàng Hơn trong React

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 29 tháng 1, 2025

Khi phát triển ứng dụng web với React, việc giao tiếp với các API là một phần không thể thiếu. Dù JavaScript cung cấp sẵn fetch để gọi API, nhưng trong thực tế, Axios thường được ưa chuộng hơn nhờ tính năng vượt trội và sự tiện lợi mà nó mang lại. Bài viết này sẽ giúp bạn hiểu tại sao Axios là lựa chọn tốt hơn và cách sử dụng nó trong các dự án React của bạn.

1. Axios là gì?

Axios là một thư viện JavaScript mạnh mẽ dùng để thực hiện các yêu cầu HTTP. Nó hỗ trợ cả trình duyệt và Node.js, giúp bạn dễ dàng giao tiếp với API RESTful. Axios hoạt động tương tự như fetch, nhưng cung cấp nhiều tính năng bổ sung, giúp việc gọi API trở nên hiệu quả và đơn giản hơn.

2. Tại sao chọn Axios thay vì fetch?

Dưới đây là một số lý do khiến Axios nổi bật hơn:

  • Hỗ trợ JSON mặc định: Axios tự động chuyển đổi dữ liệu phản hồi sang JSON, không cần gọi response.json() như khi dùng fetch.
  • Quản lý lỗi dễ dàng: Axios cung cấp hệ thống xử lý lỗi trực quan và rõ ràng hơn.
  • Hỗ trợ timeout: Axios cho phép thiết lập thời gian chờ (timeout) khi gọi API.
  • Tích hợp header dễ dàng: Việc thêm các thông tin xác thực, token, hoặc cấu hình header khác rất đơn giản với Axios.
  • Hỗ trợ yêu cầu hủy bỏ: Với Axios, bạn có thể dễ dàng hủy bỏ một yêu cầu HTTP nếu không cần thiết nữa, điều này hữu ích khi làm việc với các ứng dụng thời gian thực.
  • Tương thích với trình duyệt cũ: Axios hỗ trợ các trình duyệt cũ tốt hơn so với fetch.

3. Cài đặt Axios

Trước khi sử dụng Axios, bạn cần cài đặt nó vào dự án React của mình:

npm install axios

Hoặc nếu bạn dùng Yarn:

yarn add axios

4. Sử dụng Axios trong React

a) Gọi API đơn giản với Axios

Dưới đây là ví dụ minh họa cách gọi API đơn giản bằng Axios:

import React, { useEffect, useState } from "react";
import axios from "axios";

const App = () => {
  const [data, setData] = useState([]);
  const [error, setError] = useState("");

  useEffect(() => {
    const fetchData = async () => {
      try {
        const response = await axios.get("https://jsonplaceholder.typicode.com/posts");
        setData(response.data);
      } catch (err) {
        setError("Lỗi khi gọi API");
      }
    };

    fetchData();
  }, []);

  return (
    <div>
      {error && <p>{error}</p>}
      <ul>
        {data.map((post) => (
          <li key={post.id}>{post.title}</li>
        ))}
      </ul>
    </div>
  );
};

export default App;

b) Gửi dữ liệu lên API

Ngoài việc lấy dữ liệu, Axios cũng hỗ trợ gửi dữ liệu thông qua POST hoặc các phương thức HTTP khác:

const postData = async () => {
	  try {
	    const response = await axios.post("https://jsonplaceholder.typicode.com/posts", {
	      title: "Hello World",
	      body: "This is a test post",
	      userId: 1,
	    });
	    console.log("Dữ liệu đã được gửi:", response.data);
	  } catch (err) {
	    console.error("Lỗi khi gửi dữ liệu:", err);
	  }
};

5. Cấu hình Axios

Bạn có thể thiết lập cấu hình toàn cục cho Axios để không phải lặp lại các tùy chọn trong mỗi lần gọi API:

import axios from "axios";

axios.defaults.baseURL = "https://jsonplaceholder.typicode.com";
axios.defaults.headers.common["Authorization"] = "Bearer YOUR_ACCESS_TOKEN";
axios.defaults.timeout = 5000; // 5 giây

6. Xử lý lỗi với Axios

Axios cung cấp cách xử lý lỗi rất linh hoạt bằng cách sử dụng try-catch hoặc phương thức .catch():

axios
  .get("https://jsonplaceholder.typicode.com/posts")
  .then((response) => {
    console.log(response.data);
  })
  .catch((error) => {
    if (error.response) {
      // Lỗi phản hồi từ server
      console.error("Lỗi từ server:", error.response.status);
    } else if (error.request) {
      // Không nhận được phản hồi
      console.error("Không nhận được phản hồi:", error.request);
    } else {
      // Các lỗi khác
      console.error("Lỗi khác:", error.message);
    }
  });

7. Tích hợp Axios với React Context hoặc Redux

Trong các ứng dụng lớn, bạn có thể sử dụng Axios kết hợp với React Context hoặc Redux để quản lý trạng thái toàn cục, giúp việc gọi và sử dụng dữ liệu API trở nên mượt mà hơn.

8. Kết luận

Axios là một công cụ mạnh mẽ và tiện lợi, giúp việc gọi API trong React trở nên đơn giản và hiệu quả hơn. Với các tính năng nổi bật như quản lý lỗi, timeout, và khả năng hủy yêu cầu, Axios thực sự là một lựa chọn tuyệt vời để thay thế cho fetch. Hãy thử tích hợp Axios vào dự án của bạn để trải nghiệm những lợi ích mà nó mang lại!

Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ