Axios
Axios is a popular, promise-based HTTP client that works both in the browser and in a Node.js environment. It provides a simple API for performing various types of HTTP requests and has a wide range of features like interceptors, timeout settings, and more. Axios is often used in modern web applications to interact with RESTful APIs or other external resources.
Features of Axios
-
Promise-based: Axios uses native ES6 Promises. This makes it easy to use
async
andawait
for more readable asynchronous code. -
Interceptors: Allows you to intercept requests or responses before they are handled by
then
orcatch
. -
Transforms: Allows you to transform the request and response data.
-
Cancellation: Supports canceling requests, which can be very useful for avoiding unnecessary API calls.
-
Automatic JSON data transformation: Axios automatically converts HTTP responses to JSON, saving you an extra step.
-
Client-Side Protection Against XSRF: Axios has built-in CSRF protection which is important for web security.
Basic Usage
Here's a simple example of a GET request:
const axios = require('axios');
axios.get('https://api.example.com/items')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.log(error);
});
For a POST request:
axios.post('https://api.example.com/items', { item: 'new item' })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.log(error);
});
Using async
and await
async function fetchData() {
try {
const response = await axios.get('https://api.example.com/items');
console.log(response.data);
} catch (error) {
console.log(error);
}
}
Interceptors
You can intercept requests or responses before they are handled by then
or catch
.
// Add a request interceptor
axios.interceptors.request.use(config => {
// Do something before the request is sent
return config;
}, error => {
// Do something with the request error
return Promise.reject(error);
});
// Add a response interceptor
axios.interceptors.response.use(response => {
// Do something with the response data
return response;
}, error => {
// Do something with the response error
return Promise.reject(error);
});
Error Handling
Axios provides robust error handling through its Promise-based architecture. You can easily catch errors in the catch
block.
axios.get('https://api.example.com/items')
.catch(error => {
if (error.response) {
// The request was made and the server responded with a status code outside of the range of 2xx
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
} else if (error.request) {
// The request was made but no response was received
console.log(error.request);
} else {
// Something happened in setting up the request that triggered an Error
console.log('Error', error.message);
}
});
Axios is a versatile and efficient HTTP client for JavaScript, and it's a common choice for developers due to its wide range of features and ease of use.