A lightweight Axios-like wrapper for the native fetch
API, tailored for Next.js and other JavaScript projects.
To install the package, run:
npm install fetch-axios-wrapper
const ApiClient = require('fetch-axios-wrapper');
const apiClient = new ApiClient('https://api.example.com');
You can set default headers for all your requests, like authorization tokens:
apiClient.setHeaders({
Authorization: 'Bearer my-token',
});
apiClient.get('/users', {
params: { name: 'Alp', age: 33 }
})
.then(data => {
console.log('Fetched data:', data);
})
.catch(err => {
console.error('Error:', err.message);
});
You can cancel any ongoing request using the cancelRequest
method:
// Send a GET request with a cancelKey
apiClient.get('/users', { cancelKey: 'getUsersRequest' })
.then(data => {
console.log('Fetched data:', data);
})
.catch(err => {
console.error('Error:', err.message);
});
// Cancel the request using the cancelKey
apiClient.cancelRequest('getUsersRequest');
You can use other HTTP methods like PATCH
, HEAD
, and OPTIONS
:
apiClient.patch('/users/1', { name: 'Updated Name' })
.then(data => {
console.log('User updated:', data);
})
.catch(err => {
console.error('Error:', err.message);
});
apiClient.head('/users/1')
.then(headers => {
console.log('Fetched headers:', headers);
})
.catch(err => {
console.error('Error:', err.message);
});
apiClient.options('/users')
.then(data => {
console.log('Allowed methods:', data);
})
.catch(err => {
console.error('Error:', err.message);
});
You can upload files and other form data using the FormData
API:
const formData = new FormData();
formData.append('name', 'Alp');
formData.append('file', fileInput.files[0]);
apiClient.post('/upload', formData)
.then(data => {
console.log('Upload successful:', data);
})
.catch(err => {
console.error('Error:', err.message);
});
You can specify how long to wait for the request to complete before it’s aborted:
apiClient.get('/users', { timeout: 3000 }) // 3 seconds timeout
.then(data => {
console.log('Fetched data:', data);
})
.catch(err => {
console.error('Error:', err.message);
});
Retries the request a specified number of times if it fails:
apiClient.get('/users', { retries: 3 }) // Retry 3 times
.then(data => {
console.log('Fetched data:', data);
})
.catch(err => {
console.error('Error:', err.message);
});
You can set a global error handler to handle errors in a custom way:
apiClient.setErrorHandler((error) => {
console.error('Global error handler:', error.message);
});
apiClient.get('/users')
.catch(err => {
console.error('Caught error:', err.message);
});
MIT License