Home >Web Front-end >JS Tutorial >How to Integrate REST APIs in React with fetch and Axios

How to Integrate REST APIs in React with fetch and Axios

Susan Sarandon
Susan SarandonOriginal
2024-12-25 20:15:23622browse

How to Integrate REST APIs in React with fetch and Axios

REST API Integration in React

Integrating REST APIs into a React application is a common task for web developers. REST (Representational State Transfer) is an architectural style that allows you to interact with external resources (data) via HTTP methods like GET, POST, PUT, DELETE, etc. React makes it easy to integrate with REST APIs, allowing you to fetch data, post new data, and handle various API responses efficiently.

In this guide, we’ll explore how to integrate REST APIs into a React app using different methods like the Fetch API, Axios, and handling asynchronous data fetching.


1. Fetching Data from a REST API

The fetch() function is built into JavaScript and provides a simple way to make HTTP requests. It returns a Promise that resolves to the Response object representing the response to the request.

Using fetch API in React

Here’s a simple example using the fetch API to get data from a REST API and display it in a React component.

import React, { useState, useEffect } from 'react';

const API_URL = 'https://jsonplaceholder.typicode.com/posts'; // Example REST API

const FetchPosts = () => {
  const [posts, setPosts] = useState([]);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);

  useEffect(() => {
    // Fetch data from the API
    fetch(API_URL)
      .then((response) => {
        if (!response.ok) {
          throw new Error('Network response was not ok');
        }
        return response.json();
      })
      .then((data) => {
        setPosts(data);
        setLoading(false);
      })
      .catch((error) => {
        setError(error.message);
        setLoading(false);
      });
  }, []);

  if (loading) return <div>Loading...</div>;
  if (error) return <div>Error: {error}</div>;

  return (
    <div>
      <h1>Posts</h1>
      <ul>
        {posts.map((post) => (
          <li key={post.id}>
            <h2>{post.title}</h2>
            <p>{post.body}</p>
          </li>
        ))}
      </ul>
    </div>
  );
};

export default FetchPosts;
  • useState: Used to store the posts, loading state, and any error messages.
  • useEffect: Handles the fetching of data when the component is mounted.
  • fetch(): Fetches data from the REST API endpoint, then processes it into JSON format.
  • Error Handling: Catches any errors (like network issues) and sets the error state.

2. Using Axios for API Requests

Axios is a promise-based HTTP client for the browser and Node.js. It’s an alternative to fetch and is often preferred for its cleaner syntax and additional features like automatic JSON transformation, request cancellation, and more.

Installing Axios

To use Axios, first install it via npm:

npm install axios

Using Axios to Fetch Data

Here’s the same example as above but with Axios.

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

const API_URL = 'https://jsonplaceholder.typicode.com/posts';

const FetchPosts = () => {
  const [posts, setPosts] = useState([]);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);

  useEffect(() => {
    // Fetch data from the API using Axios
    axios
      .get(API_URL)
      .then((response) => {
        setPosts(response.data);
        setLoading(false);
      })
      .catch((error) => {
        setError(error.message);
        setLoading(false);
      });
  }, []);

  if (loading) return <div>Loading...</div>;
  if (error) return <div>Error: {error}</div>;

  return (
    <div>
      <h1>Posts</h1>
      <ul>
        {posts.map((post) => (
          <li key={post.id}>
            <h2>{post.title}</h2>
            <p>{post.body}</p>
          </li>
        ))}
      </ul>
    </div>
  );
};

export default FetchPosts;
  • axios.get(): Fetches data from the REST API. Axios automatically parses the response as JSON.
  • Error Handling: If there’s an error, it’s caught and displayed in the component.

3. Sending Data to a REST API (POST Requests)

In addition to GET requests, you can send data to a server using POST requests. This is commonly used for submitting forms or creating new records.

Using fetch for POST Requests

import React, { useState, useEffect } from 'react';

const API_URL = 'https://jsonplaceholder.typicode.com/posts'; // Example REST API

const FetchPosts = () => {
  const [posts, setPosts] = useState([]);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);

  useEffect(() => {
    // Fetch data from the API
    fetch(API_URL)
      .then((response) => {
        if (!response.ok) {
          throw new Error('Network response was not ok');
        }
        return response.json();
      })
      .then((data) => {
        setPosts(data);
        setLoading(false);
      })
      .catch((error) => {
        setError(error.message);
        setLoading(false);
      });
  }, []);

  if (loading) return <div>Loading...</div>;
  if (error) return <div>Error: {error}</div>;

  return (
    <div>
      <h1>Posts</h1>
      <ul>
        {posts.map((post) => (
          <li key={post.id}>
            <h2>{post.title}</h2>
            <p>{post.body}</p>
          </li>
        ))}
      </ul>
    </div>
  );
};

export default FetchPosts;
  • POST request: Sends data to the API in JSON format. In this case, we're sending a new post with a title and body.
  • JSON.stringify(): Converts JavaScript objects into a JSON string for the request body.

Using Axios for POST Requests

npm install axios
  • axios.post(): Sends a POST request to the API. The request body contains the data to be sent.

4. Conclusion

Integrating a REST API into a React application is a crucial skill for modern web development. Whether you use fetch() or a library like Axios, React provides you with powerful hooks like useEffect and useState to manage API requests and update the UI based on the response. You can fetch data, send data, and handle errors gracefully, ensuring a smooth user experience.


The above is the detailed content of How to Integrate REST APIs in React with fetch and Axios. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn