flexfetch
v1.0.2
Published
A simple HTTP client with caching features.
Downloads
100
Readme
FlexFetch
FlexFetch is a simple and flexible HTTP client built for performance and ease of use, featuring built-in caching, automatic retries, and customizable request/response interceptors.
Table of Contents
Installation
You can install FlexFetch via npm:
npm install flexfetch
Usage
Here's a simple example of how to use FlexFetch:
import FlexFetch from 'flexfetch';
const apiClient = new FlexFetch({
baseURL: 'https://api.example.com',
timeout: 5000,
headers: {
'Content-Type': 'application/json',
},
});
async function fetchData() {
try {
const data = await apiClient.get('/endpoint');
console.log(data);
} catch (error) {
console.error('Error fetching data:', error);
}
}
fetchData();
Features
- Supports:
- GET, POST, PUT, and DELETE requests.
- Automatic Retry:
- Mechanism for handling failed requests with retry attempts.
- Caching:
- Caches responses to improve performance.
- Interceptors:
- Allows adding custom processing for requests and responses.
- Configurable:
- Easily set timeout, headers, and retry options.
API
Constructor
const client = new FlexFetch(config);
Parameters
config
: An object to configure the client (optional).baseURL
: The base URL for the API (default:''
).timeout
: The timeout for requests in milliseconds (default:5000
).headers
: Default headers to send with requests (default:{}
).retry
: Number of retry attempts for failed requests (default:3
).retryDelay
: Delay between retry attempts in milliseconds (default:1000
).cache
: Enable or disable caching (default:true
).
Methods
- get(url, options): Makes a GET request.
- post(url, data, options): Makes a POST request.
- put(url, data, options): Makes a PUT request.
- delete(url, options): Makes a DELETE request.
- addInterceptor(type, interceptor): Adds an interceptor for requests or responses.
- clearCache(): Clears the entire cache.
- clearCacheEntry(url, method, headers): Clears a specific cache entry.
Examples
Basic Usage
Make a GET request:
const response = await apiClient.get('/users');
console.log(response);
Using Interceptors
You can add interceptors to modify requests or responses:
apiClient.addInterceptor('request', config => {
console.log('Request:', config);
return config;
});
apiClient.addInterceptor('response', data => {
console.log('Response:', data);
return data;
});
Cancelling a Request
To cancel a request, use the cancelRequest
method:
const controller = new AbortController();
const signal = controller.signal;
apiClient.cancelRequest(controller);
// Call this method when needed to cancel the request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please open an issue or submit a pull request. For major changes, please open an issue first to discuss what you would like to change.
Acknowledgements
- Thanks to the open-source community for inspiration and support.