DEV Community

Cover image for Learning API Requests with Axios: A Comprehensive Guide for 2024
Vishal Yadav
Vishal Yadav

Posted on

Learning API Requests with Axios: A Comprehensive Guide for 2024

In today's interconnected web landscape, efficient data exchange between clients and servers is crucial. Enter Axios, a powerful JavaScript library that has revolutionized how developers handle HTTP requests. Whether you're building a sleek single-page application or a robust backend service, Axios simplifies API interactions, making your code cleaner and more maintainable.

What is Axios?

Axios is a promise-based HTTP client that works seamlessly in both browser and Node.js environments. It provides an intuitive API for performing CRUD (Create, Read, Update, Delete) operations on web resources, supporting all standard HTTP methods: GET, POST, PUT, DELETE, PATCH, HEAD, and OPTIONS.

Key Features of Axios

  1. Promise-based: Utilizes JavaScript Promises for clean, asynchronous code.
  2. Browser and Node.js support: Works in multiple environments.
  3. Automatic transforms: Converts request and response data.
  4. Interceptors: Allows custom handling of requests and responses.
  5. Error handling: Provides detailed error information.
  6. Request cancellation: Offers the ability to cancel requests.
  7. TypeScript support: Includes TypeScript definitions.

Getting Started with Axios

First, install Axios using npm:

npm install axios
Enter fullscreen mode Exit fullscreen mode

Then, import it into your project:

import axios from 'axios';
Enter fullscreen mode Exit fullscreen mode

Making Requests with Axios

Let's explore how to use Axios for different types of HTTP requests:

GET Request

axios.get('https://api.example.com/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error('Error:', error.message);
  });
Enter fullscreen mode Exit fullscreen mode

POST Request

const data = { name: 'John Doe', email: 'john@example.com' };

axios.post('https://api.example.com/users', data)
  .then(response => {
    console.log('User created:', response.data);
  })
  .catch(error => {
    console.error('Error:', error.message);
  });
Enter fullscreen mode Exit fullscreen mode

PUT Request

const updatedData = { name: 'Jane Doe' };

axios.put('https://api.example.com/users/1', updatedData)
  .then(response => {
    console.log('User updated:', response.data);
  })
  .catch(error => {
    console.error('Error:', error.message);
  });
Enter fullscreen mode Exit fullscreen mode

DELETE Request

axios.delete('https://api.example.com/users/1')
  .then(response => {
    console.log('User deleted:', response.data);
  })
  .catch(error => {
    console.error('Error:', error.message);
  });
Enter fullscreen mode Exit fullscreen mode

Advanced Axios Features

Request Configuration

Axios allows you to customize your requests with various options:

axios({
  method: 'post',
  url: '/user/12345',
  data: {
    firstName: 'Fred',
    lastName: 'Flintstone'
  },
  headers: {'X-Requested-With': 'XMLHttpRequest'},
  timeout: 1000,
  withCredentials: true
})
.then(response => {
  console.log(response);
})
.catch(error => {
  console.error(error);
});
Enter fullscreen mode Exit fullscreen mode

Interceptors

Interceptors allow you to intercept requests or responses before they are handled by then or catch:

// Add a request interceptor
axios.interceptors.request.use(
  config => {
    // Do something before request is sent
    return config;
  },
  error => {
    // Do something with request error
    return Promise.reject(error);
  }
);

// Add a response interceptor
axios.interceptors.response.use(
  response => {
    // Any status code that lie within the range of 2xx cause this function to trigger
    return response;
  },
  error => {
    // Any status codes that falls outside the range of 2xx cause this function to trigger
    return Promise.reject(error);
  }
);
Enter fullscreen mode Exit fullscreen mode

Error Handling

Axios provides detailed error information, making debugging easier:

function App() {
  const handleClick = () => {
    axios.get('https://api.example.com/data')
      .then(response => {
        console.log(response.data); // Handle success
      })
      .catch(error => {
        if (error.response) {
          // Server responded with a status code outside the 2xx range
          console.log(error.response.data);
          console.log(error.response.status);
          console.log(error.response.headers);
        } else if (error.request) {
          // Request was made but no response received
          console.log(error.request);
        } else {
          // Something happened in setting up the request
          console.log('Error', error.message);
        }
        console.log(error.config); // Request config
      });
  };

  return (
    <button onClick={handleClick}>Click me to Test Error Handling</button>
  );
}

export default App;
Enter fullscreen mode Exit fullscreen mode

Conclusion

Axios is a powerful tool for making HTTP requests in JavaScript. Whether you're fetching data, submitting forms, or handling errors, Axios simplifies these tasks with its clean and efficient API. By understanding how to use Axios effectively, you can enhance the quality and maintainability of your code, ensuring a smooth interaction with APIs.

Incorporate Axios into your next project and experience the ease of handling HTTP requests with this versatile library!

Top comments (5)

Collapse
 
ivis1 profile image
Ivan Isaac

Great overview of Axios! I especially liked the section on interceptors—very useful. Do you have any plans to write about handling large-scale data pagination with Axios next?

Collapse
 
mannuelf profile image
Mannuel

Great overview 🤘

Collapse
 
goodevilgenius profile image
Dan Jones

I think mainly what you're missing from this article is an explanation of why anyone should use axios in 2024 when the fetch API exists.

Collapse
 
ubaliringim profile image
Engr. Auwal Muhammad Ubali

Thanks

Collapse
 
rowleks profile image
Rowland

Thank you for this!!